diff --git a/kirby/bootstrap.php b/kirby/bootstrap.php index 83d7f42..16266e4 100755 --- a/kirby/bootstrap.php +++ b/kirby/bootstrap.php @@ -5,8 +5,8 @@ * stop at older or too recent versions */ if ( - version_compare(PHP_VERSION, '7.2.0', '>=') === false || - version_compare(PHP_VERSION, '7.5.0', '<') === false + version_compare(PHP_VERSION, '7.3.0', '>=') === false || + version_compare(PHP_VERSION, '8.1.0', '<') === false ) { die(include __DIR__ . '/views/php.php'); } diff --git a/kirby/cacert.pem b/kirby/cacert.pem index 7ecd42f..3a08fd8 100755 --- a/kirby/cacert.pem +++ b/kirby/cacert.pem @@ -1,7 +1,7 @@ ## ## Bundle of CA Root Certificates ## -## Certificate data from Mozilla as of: Wed Oct 14 03:12:15 2020 GMT +## Certificate data from Mozilla as of: Tue Dec 8 04:12:05 2020 GMT ## ## This is a bundle of X.509 certificates of public Certificate Authorities ## (CA). These were automatically extracted from Mozilla's root certificates @@ -14,7 +14,7 @@ ## Just configure this file as the SSLCACertificateFile. ## ## Conversion done with mk-ca-bundle.pl version 1.28. -## SHA256: a831d3bc63ba1f65478afe28038742b7150c0c2efd243ac342b64792a75d2038 +## SHA256: d820b8696d8ffe42064a1384a56a8981cdc7e7e198036bbb5fa04a6c282dd9a2 ## diff --git a/kirby/composer.json b/kirby/composer.json index e729977..abeef7f 100755 --- a/kirby/composer.json +++ b/kirby/composer.json @@ -1,7 +1,7 @@ { "name": "getkirby/cms", "description": "The Kirby 3 core", - "version": "3.4.5", + "version": "3.5.0-rc.5", "license": "proprietary", "keywords": ["kirby", "cms", "core"], "homepage": "https://getkirby.com", @@ -20,17 +20,17 @@ "source": "https://github.com/getkirby/kirby" }, "require": { - "php": ">=7.2.0 <7.5.0", + "php": ">=7.3.0 <8.1.0", "ext-mbstring": "*", "ext-ctype": "*", - "getkirby/composer-installer": "^1.0", + "getkirby/composer-installer": "^1.2.0", "mustangostang/spyc": "0.6.3", "michelf/php-smartypants": "1.8.1", - "claviska/simpleimage": "3.3.4", - "phpmailer/phpmailer": "6.1.6", - "filp/whoops": "2.7.2", + "claviska/simpleimage": "3.5.1", + "phpmailer/phpmailer": "6.2.0", + "filp/whoops": "2.9.1", "true/punycode": "2.1.1", - "laminas/laminas-escaper": "2.6.1" + "laminas/laminas-escaper": "2.7.0" }, "autoload": { "files": ["config/setup.php"], @@ -48,6 +48,7 @@ "zip": "composer archive --format=zip --file=dist" }, "config": { - "optimize-autoloader": true + "optimize-autoloader": true, + "platform-check": false } } diff --git a/kirby/composer.lock b/kirby/composer.lock index 2735e50..90abf9c 100755 --- a/kirby/composer.lock +++ b/kirby/composer.lock @@ -4,20 +4,20 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "1ca40c0fbd9e8d3584e7ae28b84e0a1c", + "content-hash": "661c9880132ba63c8203537da65196e1", "packages": [ { "name": "claviska/simpleimage", - "version": "3.3.4", + "version": "3.5.1", "source": { "type": "git", "url": "https://github.com/claviska/SimpleImage.git", - "reference": "3786d80af8e6d05e5e42f0350e5e5da5b92041a0" + "reference": "ab2ab8a4672738ab77b39b00922ee4e79aeadb11" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/claviska/SimpleImage/zipball/3786d80af8e6d05e5e42f0350e5e5da5b92041a0", - "reference": "3786d80af8e6d05e5e42f0350e5e5da5b92041a0", + "url": "https://api.github.com/repos/claviska/SimpleImage/zipball/ab2ab8a4672738ab77b39b00922ee4e79aeadb11", + "reference": "ab2ab8a4672738ab77b39b00922ee4e79aeadb11", "shasum": "" }, "require": { @@ -43,29 +43,39 @@ } ], "description": "A PHP class that makes working with images as simple as possible.", - "time": "2019-09-26T01:22:02+00:00" + "support": { + "issues": "https://github.com/claviska/SimpleImage/issues", + "source": "https://github.com/claviska/SimpleImage/tree/3.5.1" + }, + "funding": [ + { + "url": "https://github.com/claviska", + "type": "github" + } + ], + "time": "2020-10-30T20:47:26+00:00" }, { "name": "filp/whoops", - "version": "2.7.2", + "version": "2.9.1", "source": { "type": "git", "url": "https://github.com/filp/whoops.git", - "reference": "17d0d3f266c8f925ebd035cd36f83cf802b47d4a" + "reference": "307fb34a5ab697461ec4c9db865b20ff2fd40771" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/17d0d3f266c8f925ebd035cd36f83cf802b47d4a", - "reference": "17d0d3f266c8f925ebd035cd36f83cf802b47d4a", + "url": "https://api.github.com/repos/filp/whoops/zipball/307fb34a5ab697461ec4c9db865b20ff2fd40771", + "reference": "307fb34a5ab697461ec4c9db865b20ff2fd40771", "shasum": "" }, "require": { - "php": "^5.5.9 || ^7.0", + "php": "^5.5.9 || ^7.0 || ^8.0", "psr/log": "^1.0.1" }, "require-dev": { "mockery/mockery": "^0.9 || ^1.0", - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0", + "phpunit/phpunit": "^4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.3", "symfony/var-dumper": "^2.6 || ^3.0 || ^4.0 || ^5.0" }, "suggest": { @@ -75,7 +85,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.6-dev" + "dev-master": "2.7-dev" } }, "autoload": { @@ -104,7 +114,11 @@ "throwable", "whoops" ], - "time": "2020-05-05T12:28:07+00:00" + "support": { + "issues": "https://github.com/filp/whoops/issues", + "source": "https://github.com/filp/whoops/tree/2.9.1" + }, + "time": "2020-11-01T12:00:00+00:00" }, { "name": "getkirby/composer-installer", @@ -150,36 +164,36 @@ }, { "name": "laminas/laminas-escaper", - "version": "2.6.1", + "version": "2.7.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-escaper.git", - "reference": "25f2a053eadfa92ddacb609dcbbc39362610da70" + "reference": "5e04bc5ae5990b17159d79d331055e2c645e5cc5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/25f2a053eadfa92ddacb609dcbbc39362610da70", - "reference": "25f2a053eadfa92ddacb609dcbbc39362610da70", + "url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/5e04bc5ae5990b17159d79d331055e2c645e5cc5", + "reference": "5e04bc5ae5990b17159d79d331055e2c645e5cc5", "shasum": "" }, "require": { "laminas/laminas-zendframework-bridge": "^1.0", - "php": "^5.6 || ^7.0" + "php": "^7.3 || ~8.0.0" }, "replace": { - "zendframework/zend-escaper": "self.version" + "zendframework/zend-escaper": "^2.6.1" }, "require-dev": { "laminas/laminas-coding-standard": "~1.0.0", - "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.2" + "phpunit/phpunit": "^9.3", + "psalm/plugin-phpunit": "^0.12.2", + "vimeo/psalm": "^3.16" + }, + "suggest": { + "ext-iconv": "*", + "ext-mbstring": "*" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.6.x-dev", - "dev-develop": "2.7.x-dev" - } - }, "autoload": { "psr-4": { "Laminas\\Escaper\\": "src/" @@ -195,7 +209,21 @@ "escaper", "laminas" ], - "time": "2019-12-31T16:43:30+00:00" + "support": { + "chat": "https://laminas.dev/chat", + "docs": "https://docs.laminas.dev/laminas-escaper/", + "forum": "https://discourse.laminas.dev", + "issues": "https://github.com/laminas/laminas-escaper/issues", + "rss": "https://github.com/laminas/laminas-escaper/releases.atom", + "source": "https://github.com/laminas/laminas-escaper" + }, + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2020-11-17T21:26:43+00:00" }, { "name": "laminas/laminas-zendframework-bridge", @@ -421,27 +449,31 @@ }, { "name": "phpmailer/phpmailer", - "version": "v6.1.6", + "version": "v6.2.0", "source": { "type": "git", "url": "https://github.com/PHPMailer/PHPMailer.git", - "reference": "c2796cb1cb99d7717290b48c4e6f32cb6c60b7b3" + "reference": "e38888a75c070304ca5514197d4847a59a5c853f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/c2796cb1cb99d7717290b48c4e6f32cb6c60b7b3", - "reference": "c2796cb1cb99d7717290b48c4e6f32cb6c60b7b3", + "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/e38888a75c070304ca5514197d4847a59a5c853f", + "reference": "e38888a75c070304ca5514197d4847a59a5c853f", "shasum": "" }, "require": { "ext-ctype": "*", "ext-filter": "*", + "ext-hash": "*", "php": ">=5.5.0" }, "require-dev": { + "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", "doctrine/annotations": "^1.2", - "friendsofphp/php-cs-fixer": "^2.2", - "phpunit/phpunit": "^4.8 || ^5.7" + "phpcompatibility/php-compatibility": "^9.3.5", + "roave/security-advisories": "dev-latest", + "squizlabs/php_codesniffer": "^3.5.6", + "yoast/phpunit-polyfills": "^0.2.0" }, "suggest": { "ext-mbstring": "Needed to send email in multibyte encoding charset", @@ -479,13 +511,17 @@ } ], "description": "PHPMailer is a full-featured email creation and transfer class for PHP", + "support": { + "issues": "https://github.com/PHPMailer/PHPMailer/issues", + "source": "https://github.com/PHPMailer/PHPMailer/tree/v6.2.0" + }, "funding": [ { - "url": "https://github.com/synchro", + "url": "https://github.com/Synchro", "type": "github" } ], - "time": "2020-05-27T12:24:03+00:00" + "time": "2020-11-25T15:24:57+00:00" }, { "name": "psr/log", @@ -675,10 +711,10 @@ "prefer-stable": false, "prefer-lowest": false, "platform": { - "php": ">=7.2.0 <7.5.0", + "php": ">=7.3.0 <8.1.0", "ext-mbstring": "*", "ext-ctype": "*" }, "platform-dev": [], - "plugin-api-version": "1.1.0" + "plugin-api-version": "2.0.0" } diff --git a/kirby/config/api/models/File.php b/kirby/config/api/models/File.php index bf5e573..7315170 100755 --- a/kirby/config/api/models/File.php +++ b/kirby/config/api/models/File.php @@ -48,7 +48,7 @@ return [ return $file->next(); }, 'nextWithTemplate' => function (File $file) { - $files = $file->templateSiblings()->sortBy('sort', 'asc', 'filename', 'asc'); + $files = $file->templateSiblings()->sort('sort', 'asc', 'filename', 'asc'); $index = $files->indexOf($file); return $files->nth($index + 1); @@ -72,7 +72,7 @@ return [ return $file->prev(); }, 'prevWithTemplate' => function (File $file) { - $files = $file->templateSiblings()->sortBy('sort', 'asc', 'filename', 'asc'); + $files = $file->templateSiblings()->sort('sort', 'asc', 'filename', 'asc'); $index = $files->indexOf($file); return $files->nth($index - 1); diff --git a/kirby/config/api/models/Page.php b/kirby/config/api/models/Page.php index 1f8467b..72084be 100755 --- a/kirby/config/api/models/Page.php +++ b/kirby/config/api/models/Page.php @@ -27,7 +27,7 @@ return [ return $page->errors(); }, 'files' => function (Page $page) { - return $page->files()->sortBy('sort', 'asc', 'filename', 'asc'); + return $page->files()->sort('sort', 'asc', 'filename', 'asc'); }, 'hasChildren' => function (Page $page) { return $page->hasChildren(); @@ -47,9 +47,9 @@ return [ 'next' => function (Page $page) { return $page ->nextAll() - ->filterBy('intendedTemplate', $page->intendedTemplate()) - ->filterBy('status', $page->status()) - ->filterBy('isReadable', true) + ->filter('intendedTemplate', $page->intendedTemplate()) + ->filter('status', $page->status()) + ->filter('isReadable', true) ->first(); }, 'num' => function (Page $page) { @@ -73,9 +73,9 @@ return [ 'prev' => function (Page $page) { return $page ->prevAll() - ->filterBy('intendedTemplate', $page->intendedTemplate()) - ->filterBy('status', $page->status()) - ->filterBy('isReadable', true) + ->filter('intendedTemplate', $page->intendedTemplate()) + ->filter('status', $page->status()) + ->filter('isReadable', true) ->last(); }, 'previewUrl' => function (Page $page) { diff --git a/kirby/config/api/models/Site.php b/kirby/config/api/models/Site.php index ca5dfe0..ef31a07 100755 --- a/kirby/config/api/models/Site.php +++ b/kirby/config/api/models/Site.php @@ -24,7 +24,7 @@ return [ return $site->drafts(); }, 'files' => function (Site $site) { - return $site->files()->sortBy('sort', 'asc', 'filename', 'asc'); + return $site->files()->sort('sort', 'asc', 'filename', 'asc'); }, 'options' => function (Site $site) { return $site->permissions()->toArray(); diff --git a/kirby/config/api/models/System.php b/kirby/config/api/models/System.php index 6e74756..8f8ee1a 100755 --- a/kirby/config/api/models/System.php +++ b/kirby/config/api/models/System.php @@ -35,6 +35,21 @@ return [ 'license' => function (System $system) { return $system->license(); }, + 'loginMethods' => function (System $system) { + return array_keys($system->loginMethods()); + }, + 'pendingChallenge' => function () { + if ($this->session()->get('kirby.challenge.email') === null) { + return null; + } + + // fake the email challenge if no challenge was created + // to avoid leaking whether the user exists + return $this->session()->get('kirby.challenge.type', 'email'); + }, + 'pendingEmail' => function () { + return $this->session()->get('kirby.challenge.email'); + }, 'requirements' => function (System $system) { return $system->toArray(); }, @@ -86,6 +101,9 @@ return [ 'isOk', 'isInstallable', 'isInstalled', + 'loginMethods', + 'pendingChallenge', + 'pendingEmail', 'title', 'translation' ], diff --git a/kirby/config/api/models/User.php b/kirby/config/api/models/User.php index c4faab6..f76ae53 100755 --- a/kirby/config/api/models/User.php +++ b/kirby/config/api/models/User.php @@ -24,7 +24,7 @@ return [ return $user->email(); }, 'files' => function (User $user) { - return $user->files()->sortBy('sort', 'asc', 'filename', 'asc'); + return $user->files()->sort('sort', 'asc', 'filename', 'asc'); }, 'id' => function (User $user) { return $user->id(); diff --git a/kirby/config/api/routes/auth.php b/kirby/config/api/routes/auth.php index 7e4dcb4..535e9e1 100755 --- a/kirby/config/api/routes/auth.php +++ b/kirby/config/api/routes/auth.php @@ -19,7 +19,7 @@ return [ } ], [ - 'pattern' => 'auth/login', + 'pattern' => 'auth/code', 'method' => 'POST', 'auth' => false, 'action' => function () { @@ -30,11 +30,7 @@ return [ throw new InvalidArgumentException('Invalid CSRF token'); } - $email = $this->requestBody('email'); - $long = $this->requestBody('long'); - $password = $this->requestBody('password'); - - $user = $this->kirby()->auth()->login($email, $password, $long); + $user = $auth->verifyChallenge($this->requestBody('code')); return [ 'code' => 200, @@ -43,6 +39,65 @@ return [ ]; } ], + [ + 'pattern' => 'auth/login', + 'method' => 'POST', + 'auth' => false, + 'action' => function () { + $auth = $this->kirby()->auth(); + $methods = $this->kirby()->system()->loginMethods(); + + // csrf token check + if ($auth->type() === 'session' && $auth->csrf() === false) { + throw new InvalidArgumentException('Invalid CSRF token'); + } + + $email = $this->requestBody('email'); + $long = $this->requestBody('long'); + $password = $this->requestBody('password'); + + if ($password) { + if (isset($methods['password']) !== true) { + throw new InvalidArgumentException('Login with password is not enabled'); + } + + if ( + isset($methods['password']['2fa']) === true && + $methods['password']['2fa'] === true + ) { + $challenge = $auth->login2fa($email, $password, $long); + } else { + $user = $auth->login($email, $password, $long); + } + } else { + if (isset($methods['code']) === true) { + $mode = 'login'; + } elseif (isset($methods['password-reset']) === true) { + $mode = 'password-reset'; + } else { + throw new InvalidArgumentException('Login without password is not enabled'); + } + + $challenge = $auth->createChallenge($email, $long, $mode); + } + + if (isset($user)) { + return [ + 'code' => 200, + 'status' => 'ok', + 'user' => $this->resolve($user)->view('auth')->toArray() + ]; + } else { + return [ + 'code' => 200, + 'status' => 'ok', + + // don't leak users that don't exist at this point + 'challenge' => $challenge ?? 'email' + ]; + } + } + ], [ 'pattern' => 'auth/logout', 'method' => 'POST', diff --git a/kirby/config/api/routes/files.php b/kirby/config/api/routes/files.php index 4935d44..e183716 100755 --- a/kirby/config/api/routes/files.php +++ b/kirby/config/api/routes/files.php @@ -27,7 +27,7 @@ return [ 'pattern' => '(:all)/files', 'method' => 'GET', 'action' => function (string $path) { - return $this->parent($path)->files()->sortBy('sort', 'asc', 'filename', 'asc'); + return $this->parent($path)->files()->sort('sort', 'asc', 'filename', 'asc'); } ], [ @@ -110,7 +110,7 @@ return [ $files = $this ->site() ->index(true) - ->filterBy('isReadable', true) + ->filter('isReadable', true) ->files(); if ($this->requestMethod() === 'GET') { diff --git a/kirby/config/api/routes/site.php b/kirby/config/api/routes/site.php index 7e31908..acfbf76 100755 --- a/kirby/config/api/routes/site.php +++ b/kirby/config/api/routes/site.php @@ -78,7 +78,7 @@ return [ $pages = $this ->site() ->index(true) - ->filterBy('isReadable', true); + ->filter('isReadable', true); if ($this->requestMethod() === 'GET') { return $pages->search($this->requestQuery('q')); diff --git a/kirby/config/api/routes/users.php b/kirby/config/api/routes/users.php index a5c41d4..88068a4 100755 --- a/kirby/config/api/routes/users.php +++ b/kirby/config/api/routes/users.php @@ -11,7 +11,7 @@ return [ 'pattern' => 'users', 'method' => 'GET', 'action' => function () { - return $this->users(); + return $this->users()->sort('username', 'asc', 'email', 'asc'); } ], [ diff --git a/kirby/config/blocks/code/code.php b/kirby/config/blocks/code/code.php new file mode 100755 index 0000000..f89dfff --- /dev/null +++ b/kirby/config/blocks/code/code.php @@ -0,0 +1 @@ +
code()->html(false) ?>
diff --git a/kirby/config/blocks/code/code.yml b/kirby/config/blocks/code/code.yml new file mode 100755 index 0000000..b697784 --- /dev/null +++ b/kirby/config/blocks/code/code.yml @@ -0,0 +1,59 @@ +name: field.blocks.code.name +icon: code +wysiwyg: true +preview: code +fields: + code: + label: field.blocks.code.name + type: textarea + placeholder: field.blocks.code.placeholder + buttons: false + font: monospace + language: + label: field.blocks.code.language + type: select + default: text + options: + bash: Bash + basic: BASIC + c: C + clojure: Clojure + cpp: C++ + csharp: C# + css: CSS + diff: Diff + elixir: Elixir + elm: Elm + erlang: Erlang + go: Go + graphql: GraphQL + haskell: Haskell + html: HTML + java: Java + js: JavaScript + json: JSON + latext: LaTeX + less: Less + lisp: Lisp + lua: Lua + makefile: Makefile + markdown: Markdown + markup: Markup + objectivec: Objective-C + pascal: Pascal + perl: Perl + php: PHP + text: Plain Text + python: Python + r: R + ruby: Ruby + rust: Rust + sass: Sass + scss: SCSS + shell: Shell + sql: SQL + swift: Swift + typescript: TypeScript + vbnet: VB.net + xml: XML + yaml: YAML diff --git a/kirby/config/blocks/gallery/gallery.php b/kirby/config/blocks/gallery/gallery.php new file mode 100755 index 0000000..67d535a --- /dev/null +++ b/kirby/config/blocks/gallery/gallery.php @@ -0,0 +1,9 @@ +
+ +
diff --git a/kirby/config/blocks/gallery/gallery.yml b/kirby/config/blocks/gallery/gallery.yml new file mode 100755 index 0000000..a6844f2 --- /dev/null +++ b/kirby/config/blocks/gallery/gallery.yml @@ -0,0 +1,15 @@ +name: field.blocks.gallery.name +icon: dashboard +preview: gallery +fields: + images: + label: field.blocks.gallery.images.label + type: files + multiple: true + layout: cards + size: tiny + empty: field.blocks.gallery.images.empty + uploads: + template: blocks/image + image: + ratio: 1/1 diff --git a/kirby/config/blocks/heading/heading.php b/kirby/config/blocks/heading/heading.php new file mode 100755 index 0000000..4ef6a8a --- /dev/null +++ b/kirby/config/blocks/heading/heading.php @@ -0,0 +1 @@ +<level()->or('h2') ?>>text() ?>> diff --git a/kirby/config/blocks/heading/heading.yml b/kirby/config/blocks/heading/heading.yml new file mode 100755 index 0000000..d7ee4f0 --- /dev/null +++ b/kirby/config/blocks/heading/heading.yml @@ -0,0 +1,24 @@ +name: field.blocks.heading.name +icon: title +wysiwyg: true +preview: heading +fields: + level: + label: field.blocks.heading.level + type: select + empty: false + default: "h2" + width: 1/6 + options: + - h1 + - h2 + - h3 + - h4 + - h5 + - h6 + text: + label: field.blocks.heading.text + type: writer + inline: true + width: 5/6 + placeholder: field.blocks.heading.placeholder diff --git a/kirby/config/blocks/image/image.php b/kirby/config/blocks/image/image.php new file mode 100755 index 0000000..525532f --- /dev/null +++ b/kirby/config/blocks/image/image.php @@ -0,0 +1,34 @@ +alt(); +$caption = $block->caption(); +$crop = $block->crop()->isTrue(); +$link = $block->link(); +$ratio = $block->ratio()->or('auto'); +$src = null; + +if ($block->location() == 'web') { + $src = $block->src(); +} elseif ($image = $block->image()->toFile()) { + $alt = $alt ?? $image->alt(); + $src = $image->url(); +} + +?> + + $ratio, 'data-crop' => $crop], ' ') ?>> + isNotEmpty()): ?> + + <?= $alt ?> + + + <?= $alt ?> + + + isNotEmpty()): ?> +
+ +
+ + + diff --git a/kirby/config/blocks/image/image.yml b/kirby/config/blocks/image/image.yml new file mode 100755 index 0000000..c76a5c1 --- /dev/null +++ b/kirby/config/blocks/image/image.yml @@ -0,0 +1,59 @@ +name: field.blocks.image.name +icon: image +preview: image +fields: + location: + label: field.blocks.image.location + type: radio + columns: 2 + default: "kirby" + options: + kirby: Kirby + web: Web + image: + label: field.blocks.image.name + type: files + multiple: false + image: + back: black + uploads: + template: blocks/image + when: + location: kirby + src: + label: Image URL + type: url + when: + location: web + alt: + label: field.blocks.image.alt + type: text + icon: title + caption: + label: field.blocks.image.caption + type: writer + icon: text + inline: true + link: + label: field.blocks.image.link + type: text + icon: url + ratio: + label: field.blocks.image.ratio + type: select + placeholder: Auto + width: 1/2 + options: + 1/1: "1:1" + 16/9: "16:9" + 10/8: "10:8" + 21/9: "21:9" + 7/5: "7:5" + 4/3: "4:3" + 5/3: "5:3" + 3/2: "3:2" + 3/1: "3:1" + crop: + label: field.blocks.image.crop + type: toggle + width: 1/2 diff --git a/kirby/config/blocks/list/list.php b/kirby/config/blocks/list/list.php new file mode 100755 index 0000000..7953570 --- /dev/null +++ b/kirby/config/blocks/list/list.php @@ -0,0 +1 @@ +text(); diff --git a/kirby/config/blocks/list/list.yml b/kirby/config/blocks/list/list.yml new file mode 100755 index 0000000..ded7519 --- /dev/null +++ b/kirby/config/blocks/list/list.yml @@ -0,0 +1,8 @@ +name: field.blocks.list.name +icon: list-bullet +wysiwyg: true +preview: list +fields: + text: + label: field.blocks.list.name + type: list diff --git a/kirby/config/blocks/markdown/markdown.php b/kirby/config/blocks/markdown/markdown.php new file mode 100755 index 0000000..4b482d6 --- /dev/null +++ b/kirby/config/blocks/markdown/markdown.php @@ -0,0 +1 @@ +text()->kt(); diff --git a/kirby/config/blocks/markdown/markdown.yml b/kirby/config/blocks/markdown/markdown.yml new file mode 100755 index 0000000..cecafe4 --- /dev/null +++ b/kirby/config/blocks/markdown/markdown.yml @@ -0,0 +1,11 @@ +name: field.blocks.markdown.name +icon: markdown +preview: markdown +wysiwyg: true +fields: + text: + label: field.blocks.markdown.label + placeholder: field.blocks.markdown.placeholder + type: textarea + buttons: false + font: monospace diff --git a/kirby/config/blocks/quote/quote.php b/kirby/config/blocks/quote/quote.php new file mode 100755 index 0000000..bc6a673 --- /dev/null +++ b/kirby/config/blocks/quote/quote.php @@ -0,0 +1,8 @@ +
+ text() ?> + citation()->isNotEmpty()): ?> +
+ citation() ?> +
+ +
diff --git a/kirby/config/blocks/quote/quote.yml b/kirby/config/blocks/quote/quote.yml new file mode 100755 index 0000000..b14e126 --- /dev/null +++ b/kirby/config/blocks/quote/quote.yml @@ -0,0 +1,17 @@ +name: field.blocks.quote.name +icon: quote +wysiwyg: true +preview: quote +fields: + text: + label: field.blocks.quote.text.label + placeholder: field.blocks.quote.text.placeholder + type: writer + inline: true + icon: quote + citation: + label: field.blocks.quote.citation.label + placeholder: field.blocks.quote.citation.placeholder + type: writer + inline: true + icon: user diff --git a/kirby/config/blocks/table/table.yml b/kirby/config/blocks/table/table.yml new file mode 100755 index 0000000..8e0d0b2 --- /dev/null +++ b/kirby/config/blocks/table/table.yml @@ -0,0 +1,3 @@ +name: Table +icon: menu +preview: table diff --git a/kirby/config/blocks/text/text.php b/kirby/config/blocks/text/text.php new file mode 100755 index 0000000..7953570 --- /dev/null +++ b/kirby/config/blocks/text/text.php @@ -0,0 +1 @@ +text(); diff --git a/kirby/config/blocks/text/text.yml b/kirby/config/blocks/text/text.yml new file mode 100755 index 0000000..90117a5 --- /dev/null +++ b/kirby/config/blocks/text/text.yml @@ -0,0 +1,9 @@ +name: field.blocks.text.name +icon: text +wysiwyg: true +preview: text +fields: + text: + type: writer + nodes: false + placeholder: field.blocks.text.placeholder diff --git a/kirby/config/blocks/video/video.php b/kirby/config/blocks/video/video.php new file mode 100755 index 0000000..9d289b8 --- /dev/null +++ b/kirby/config/blocks/video/video.php @@ -0,0 +1,8 @@ +url()->isNotEmpty()): ?> +
+ url()) ?> + caption()->isNotEmpty()): ?> +
caption() ?>
+ +
+ diff --git a/kirby/config/blocks/video/video.yml b/kirby/config/blocks/video/video.yml new file mode 100755 index 0000000..6b5223a --- /dev/null +++ b/kirby/config/blocks/video/video.yml @@ -0,0 +1,12 @@ +name: field.blocks.video.name +icon: video +preview: video +fields: + url: + label: field.blocks.video.url.label + type: url + placeholder: field.blocks.video.url.placeholder + caption: + label: field.blocks.video.caption + type: writer + inline: true diff --git a/kirby/config/blueprints.php b/kirby/config/blueprints.php index 84792fb..95ffade 100755 --- a/kirby/config/blueprints.php +++ b/kirby/config/blueprints.php @@ -1,7 +1,26 @@ __DIR__ . '/blueprints/file.yml', - 'pages/default' => __DIR__ . '/blueprints/page.yml', - 'site' => __DIR__ . '/blueprints/site.yml' + // blocks + 'blocks/code' => $blocksRoot . '/code/code.yml', + 'blocks/gallery' => $blocksRoot . '/gallery/gallery.yml', + 'blocks/heading' => $blocksRoot . '/heading/heading.yml', + 'blocks/image' => $blocksRoot . '/image/image.yml', + 'blocks/list' => $blocksRoot . '/list/list.yml', + 'blocks/markdown' => $blocksRoot . '/markdown/markdown.yml', + 'blocks/quote' => $blocksRoot . '/quote/quote.yml', + 'blocks/table' => $blocksRoot . '/table/table.yml', + 'blocks/text' => $blocksRoot . '/text/text.yml', + 'blocks/video' => $blocksRoot . '/video/video.yml', + + // file blueprints + 'files/default' => __DIR__ . '/blueprints/files/default.yml', + + // page blueprints + 'pages/default' => __DIR__ . '/blueprints/pages/default.yml', + + // site blueprints + 'site' => __DIR__ . '/blueprints/site.yml' ]; diff --git a/kirby/config/blueprints/blocks/code.yml b/kirby/config/blueprints/blocks/code.yml new file mode 100755 index 0000000..a103422 --- /dev/null +++ b/kirby/config/blueprints/blocks/code.yml @@ -0,0 +1,56 @@ +name: Code +icon: code +fields: + code: + label: Code + type: textarea + buttons: false + font: monospace + language: + label: Language + type: select + default: text + options: + bash: Bash + basic: BASIC + c: C + clojure: Clojure + cpp: C++ + csharp: C# + css: CSS + diff: Diff + elixir: Elixir + elm: Elm + erlang: Erlang + go: Go + graphql: GraphQL + haskell: Haskell + html: HTML + java: Java + js: JavaScript + json: JSON + latext: LaTeX + less: Less + lisp: Lisp + lua: Lua + makefile: Makefile + markdown: Markdown + markup: Markup + objectivec: Objective-C + pascal: Pascal + perl: Perl + php: PHP + text: Plain Text + python: Python + r: R + ruby: Ruby + rust: Rust + sass: Sass + scss: SCSS + shell: Shell + sql: SQL + swift: Swift + typescript: TypeScript + vbnet: VB.net + xml: XML + yaml: YAML diff --git a/kirby/config/blueprints/blocks/heading.yml b/kirby/config/blueprints/blocks/heading.yml new file mode 100755 index 0000000..e381b5c --- /dev/null +++ b/kirby/config/blueprints/blocks/heading.yml @@ -0,0 +1,21 @@ +icon: title +fields: + text: + type: text + level: + type: select + width: 1/2 + default: 1 + empty: false + default: "2" + options: + - value: "1" + text: Heading 1 + - value: "2" + text: Heading 2 + - value: "3" + text: Heading 3 + id: + type: text + label: ID + width: 1/2 diff --git a/kirby/config/blueprints/blocks/image.yml b/kirby/config/blueprints/blocks/image.yml new file mode 100755 index 0000000..31b1ef1 --- /dev/null +++ b/kirby/config/blueprints/blocks/image.yml @@ -0,0 +1,16 @@ +name: Image +icon: image +fields: + image: + type: files + multiple: false + alt: + type: text + icon: title + caption: + type: writer + inline: true + icon: text + link: + type: text + icon: url diff --git a/kirby/config/blueprints/blocks/quote.yml b/kirby/config/blueprints/blocks/quote.yml new file mode 100755 index 0000000..78bf681 --- /dev/null +++ b/kirby/config/blueprints/blocks/quote.yml @@ -0,0 +1,12 @@ +name: Quote +icon: quote +fields: + text: + label: Quote Text + type: writer + inline: true + citation: + label: Citation + type: writer + inline: true + placeholder: by … diff --git a/kirby/config/blueprints/blocks/table.yml b/kirby/config/blueprints/blocks/table.yml new file mode 100755 index 0000000..a8513ba --- /dev/null +++ b/kirby/config/blueprints/blocks/table.yml @@ -0,0 +1,25 @@ +name: Table +icon: menu +fields: + rows: + label: Menu + type: structure + columns: + dish: true + description: true + price: + before: € + width: 1/4 + align: right + fields: + dish: + label: Dish + type: text + description: + label: Description + type: text + price: + label: Price + type: number + before: € + step: 0.01 diff --git a/kirby/config/blueprints/blocks/text.yml b/kirby/config/blueprints/blocks/text.yml new file mode 100755 index 0000000..c251959 --- /dev/null +++ b/kirby/config/blueprints/blocks/text.yml @@ -0,0 +1,5 @@ +name: Text +icon: text +fields: + text: + type: writer diff --git a/kirby/config/blueprints/blocks/video.yml b/kirby/config/blueprints/blocks/video.yml new file mode 100755 index 0000000..9131ace --- /dev/null +++ b/kirby/config/blueprints/blocks/video.yml @@ -0,0 +1,8 @@ +name: Video +icon: video +label: "{{ url }}" +fields: + url: + type: url + caption: + type: writer diff --git a/kirby/config/blueprints/file.yml b/kirby/config/blueprints/files/default.yml similarity index 100% rename from kirby/config/blueprints/file.yml rename to kirby/config/blueprints/files/default.yml diff --git a/kirby/config/blueprints/page.yml b/kirby/config/blueprints/pages/default.yml similarity index 100% rename from kirby/config/blueprints/page.yml rename to kirby/config/blueprints/pages/default.yml diff --git a/kirby/config/components.php b/kirby/config/components.php index 132aa21..51c81fe 100755 --- a/kirby/config/components.php +++ b/kirby/config/components.php @@ -236,7 +236,7 @@ return [ return $item->searchHits > 0 ? true : false; }); - return $results->sortBy('searchScore', 'desc'); + return $results->sort('searchScore', 'desc'); }, /** diff --git a/kirby/config/fields.php b/kirby/config/fields.php index 6b82d09..3c878b6 100755 --- a/kirby/config/fields.php +++ b/kirby/config/fields.php @@ -1,6 +1,7 @@ 'Kirby\Form\Field\BlocksField', 'checkboxes' => __DIR__ . '/fields/checkboxes.php', 'date' => __DIR__ . '/fields/date.php', 'email' => __DIR__ . '/fields/email.php', @@ -9,7 +10,9 @@ return [ 'headline' => __DIR__ . '/fields/headline.php', 'hidden' => __DIR__ . '/fields/hidden.php', 'info' => __DIR__ . '/fields/info.php', + 'layout' => 'Kirby\Form\Field\LayoutField', 'line' => __DIR__ . '/fields/line.php', + 'list' => __DIR__ . '/fields/list.php', 'multiselect' => __DIR__ . '/fields/multiselect.php', 'number' => __DIR__ . '/fields/number.php', 'pages' => __DIR__ . '/fields/pages.php', @@ -24,5 +27,6 @@ return [ 'time' => __DIR__ . '/fields/time.php', 'toggle' => __DIR__ . '/fields/toggle.php', 'url' => __DIR__ . '/fields/url.php', - 'users' => __DIR__ . '/fields/users.php' + 'users' => __DIR__ . '/fields/users.php', + 'writer' => __DIR__ . '/fields/writer.php' ]; diff --git a/kirby/config/fields/date.php b/kirby/config/fields/date.php index cbf4c55..32f1868 100755 --- a/kirby/config/fields/date.php +++ b/kirby/config/fields/date.php @@ -1,21 +1,38 @@ ['datetime'], 'props' => [ + /** + * Unset inherited props + */ + 'placeholder' => null, + + /** + * Activate/deactivate the dropdown calendar + */ + 'calendar' => function (bool $calendar = true) { + return $calendar; + }, + + /** * Default date when a new page/file/user gets created */ - 'default' => function ($default = null) { + 'default' => function (string $default = null) { return $default; }, /** - * Defines a custom format that is used when the field is saved + * Custom format (dayjs tokens: `DD`, `MM`, `YYYY`) that is + * used to display the field in the Panel */ - 'format' => function (string $format = null) { - return $format; + 'display' => function ($display = 'YYYY-MM-DD') { + return I18n::translate($display, $display); }, /** @@ -24,22 +41,52 @@ return [ 'icon' => function (string $icon = 'calendar') { return $icon; }, + /** - * Youngest date, which can be selected/saved + * Latest date, which can be selected/saved (Y-m-d) */ 'max' => function (string $max = null) { - return $this->toDate($max); + return $this->toDatetime($max); }, /** - * Oldest date, which can be selected/saved + * Earliest date, which can be selected/saved (Y-m-d) */ 'min' => function (string $min = null) { - return $this->toDate($min); + return $this->toDatetime($min); }, + /** - * The placeholder is not available + * Round to the nearest: sub-options for `unit` (day) and `size` (1) */ - 'placeholder' => null, + 'step' => function ($step = null) { + if ($step === null) { + return [ + 'size' => 1, + 'unit' => 'day' + ]; + } + + if (is_array($step) === true) { + return $step; + } + + if (is_int($step) === true) { + return [ + 'size' => $step, + 'unit' => 'day' + ]; + } + + if (is_string($step) === true) { + return [ + 'size' => 1, + 'unit' => $step + ]; + } + + throw new Exception('step option has to be defined as array'); + }, + /** * Pass `true` or an array of time field options to show the time selector. */ @@ -55,27 +102,29 @@ return [ ], 'computed' => [ 'default' => function () { - return $this->toDate($this->default); + return $this->toDatetime($this->default); }, - 'format' => function () { - return $this->props['format'] ?? ($this->time() === false ? 'Y-m-d' : 'Y-m-d H:i'); + 'display' => function () { + if ($this->display) { + return Str::upper($this->display); + } }, - 'value' => function () { - return $this->toDate($this->value); - }, - ], - 'methods' => [ - 'toDate' => function ($value) { - if ($timestamp = timestamp($value, $this->time['step'] ?? 5)) { - return date('Y-m-d H:i:s', $timestamp); + 'step' => function () { + if ($this->time !== false) { + $timeField = require __DIR__ . '/time.php'; + return $timeField['props']['step']($this->time['step'] ?? null); } - return null; - } + return $this->step; + }, + 'value' => function () { + return $this->toDatetime($this->value); + }, ], 'save' => function ($value) { - if ($value !== null && $date = strtotime($value)) { - return date($this->format(), $date); + if ($value !== null && $timestamp = timestamp($value)) { + $format = $this->time === false ? 'Y-m-d' : 'Y-m-d H:i:s'; + return $this->toISO($timestamp, $format); } return ''; @@ -86,7 +135,7 @@ return [ $min = $this->min ? strtotime($this->min) : null; $max = $this->max ? strtotime($this->max) : null; $value = strtotime($this->value()); - $format = 'd.m.Y'; + $format = $this->time === false ? 'd.m.Y' : 'd.m.Y H:i'; $errors = []; if ($value && $min && $value < $min) { diff --git a/kirby/config/fields/headline.php b/kirby/config/fields/headline.php index 9b52938..c87dd53 100755 --- a/kirby/config/fields/headline.php +++ b/kirby/config/fields/headline.php @@ -11,7 +11,6 @@ return [ 'before' => null, 'default' => null, 'disabled' => null, - 'help' => null, 'icon' => null, 'placeholder' => null, 'required' => null, diff --git a/kirby/config/fields/info.php b/kirby/config/fields/info.php index 7e36a9d..026df28 100755 --- a/kirby/config/fields/info.php +++ b/kirby/config/fields/info.php @@ -4,6 +4,19 @@ use Kirby\Toolkit\I18n; return [ 'props' => [ + /** + * Unset inherited props + */ + 'after' => null, + 'autofocus' => null, + 'before' => null, + 'default' => null, + 'disabled' => null, + 'icon' => null, + 'placeholder' => null, + 'required' => null, + 'translate' => null, + /** * Text to be displayed */ diff --git a/kirby/config/fields/list.php b/kirby/config/fields/list.php new file mode 100755 index 0000000..cfc487c --- /dev/null +++ b/kirby/config/fields/list.php @@ -0,0 +1,12 @@ + [ + /** + * Sets the allowed HTML formats. Available formats: `bold`, `italic`, `underline`, `strike`, `code`, `link`. Activate them all by passing `true`. Deactivate them all by passing `false` + */ + 'marks' => function ($marks = true) { + return $marks; + } + ] +]; diff --git a/kirby/config/fields/mixins/datetime.php b/kirby/config/fields/mixins/datetime.php new file mode 100755 index 0000000..78f6fc0 --- /dev/null +++ b/kirby/config/fields/mixins/datetime.php @@ -0,0 +1,16 @@ + [ + 'toDatetime' => function ($value, string $format = 'Y-m-d H:i:s') { + if ($timestamp = timestamp($value, $this->step)) { + return $this->toISO($timestamp, $format); + } + + return null; + }, + 'toISO' => function (int $time, string $format = 'Y-m-d H:i:s') { + return date($format, $time); + } + ] +]; diff --git a/kirby/config/fields/mixins/upload.php b/kirby/config/fields/mixins/upload.php index ce5bd4c..dd6422d 100755 --- a/kirby/config/fields/mixins/upload.php +++ b/kirby/config/fields/mixins/upload.php @@ -30,7 +30,7 @@ return [ 'template' => $template ]); - $uploads['accept'] = $file->blueprint()->accept()['mime'] ?? '*'; + $uploads['accept'] = $file->blueprint()->acceptMime(); } else { $uploads['accept'] = '*'; } diff --git a/kirby/config/fields/textarea.php b/kirby/config/fields/textarea.php index cd23ddf..8c8976a 100755 --- a/kirby/config/fields/textarea.php +++ b/kirby/config/fields/textarea.php @@ -99,6 +99,7 @@ return [ ], [ 'pattern' => 'upload', + 'method' => 'POST', 'action' => function () { $field = $this->field(); $uploads = $field->uploads(); diff --git a/kirby/config/fields/time.php b/kirby/config/fields/time.php index ef2fa23..f130a94 100755 --- a/kirby/config/fields/time.php +++ b/kirby/config/fields/time.php @@ -1,24 +1,51 @@ ['datetime'], 'props' => [ /** * Unset inherited props */ 'placeholder' => null, + /** * Sets the default time when a new page/file/user is created */ 'default' => function ($default = null) { return $default; }, + + /** + * Custom format (dayjs tokens: `HH`, `hh`, `mm`, `ss`, `a`) that is + * used to display the field in the Panel + */ + 'display' => function ($display = null) { + return I18n::translate($display, $display); + }, + /** * Changes the clock icon */ 'icon' => function (string $icon = 'clock') { return $icon; }, + /** + * Latest time, which can be selected/saved (H:i or H:i:s) + */ + 'max' => function (string $max = null) { + return $max ? $this->toDatetime(date('Y-m-d ') . $max) : null; + }, + /** + * Earliest time, which can be selected/saved (H:i or H:i:s) + */ + 'min' => function (string $min = null) { + return $min ? $this->toDatetime(date('Y-m-d ') . $min) : null; + }, + /** * `12` or `24` hour notation. If `12`, an AM/PM selector will be shown. */ @@ -26,10 +53,35 @@ return [ return $value === 24 ? 24 : 12; }, /** - * The interval between minutes in the minutes select dropdown. + * Round to the nearest: sub-options for `unit` (minute) and `size` (5) */ - 'step' => function (int $step = 5) { - return $step; + 'step' => function ($step = null) { + if ($step === null) { + return [ + 'size' => 5, + 'unit' => 'minute' + ]; + } + + if (is_array($step) === true) { + return $step; + } + + if (is_int($step) === true) { + return [ + 'size' => $step, + 'unit' => 'minute' + ]; + } + + if (is_string($step) === true) { + return [ + 'size' => 1, + 'unit' => $step + ]; + } + + throw new Exception('step option has to be defined as array'); }, 'value' => function ($value = null) { return $value; @@ -37,32 +89,70 @@ return [ ], 'computed' => [ 'default' => function () { - return $this->toTime($this->default); + return $this->toDatetime($this->default, 'H:i:s'); }, - 'format' => function () { - return $this->notation === 24 ? 'H:i' : 'h:i a'; - }, - 'value' => function () { - return $this->toTime($this->value); - } - ], - 'methods' => [ - 'toTime' => function ($value) { - if ($timestamp = timestamp($value, $this->step)) { - return date('H:i', $timestamp); + 'display' => function () { + if ($this->display) { + return $this->display; } - return null; + return $this->notation === 24 ? 'HH:mm' : 'hh:mm a'; + }, + 'value' => function () { + return $this->toDatetime($this->value, 'H:i:s'); } ], 'save' => function ($value): string { - if ($timestamp = strtotime($value)) { - return date($this->format, $timestamp); + if ($value != null && $timestamp = strtotime($value)) { + return date('H:i:s', $timestamp); } return ''; }, 'validations' => [ 'time', + 'minMax' => function ($value) { + $min = $this->min ? strtotime($this->min) : null; + $max = $this->max ? strtotime($this->max) : null; + $value = strtotime($this->value()); + $format = 'H:i:s'; + $errors = []; + + if ($value && $min && $value < $min) { + $errors['min'] = $min; + } + + if ($value && $max && $value > $max) { + $errors['max'] = $max; + } + + if (empty($errors) === false) { + if ($min && $max) { + throw new Exception([ + 'key' => 'validation.time.between', + 'data' => [ + 'min' => date($format, $min), + 'max' => date($format, $max) + ] + ]); + } elseif ($min) { + throw new Exception([ + 'key' => 'validation.time.after', + 'data' => [ + 'time' => date($format, $min), + ] + ]); + } else { + throw new Exception([ + 'key' => 'validation.time.before', + 'data' => [ + 'time' => date($format, $max), + ] + ]); + } + } + + return true; + }, ] ]; diff --git a/kirby/config/fields/toggle.php b/kirby/config/fields/toggle.php index a43c613..b8e9fef 100755 --- a/kirby/config/fields/toggle.php +++ b/kirby/config/fields/toggle.php @@ -59,9 +59,7 @@ return [ 'boolean', 'required' => function ($value) { if ($this->isRequired() && ($value === false || $this->isEmpty($value))) { - throw new InvalidArgumentException([ - 'key' => 'form.field.required' - ]); + throw new InvalidArgumentException(I18n::translate('field.required')); } }, ] diff --git a/kirby/config/fields/writer.php b/kirby/config/fields/writer.php new file mode 100755 index 0000000..a726611 --- /dev/null +++ b/kirby/config/fields/writer.php @@ -0,0 +1,20 @@ + [ + /** + * Enables inline mode, which will not wrap new lines in paragraphs and creates hard breaks instead. + * + * @param bool $inline + */ + 'inline' => function (bool $inline = false) { + return $inline; + }, + /** + * Sets the allowed HTML formats. Available formats: `bold`, `italic`, `underline`, `strike`, `code`, `link`. Activate them all by passing `true`. Deactivate them all by passing `false` + */ + 'marks' => function ($marks = true) { + return $marks; + } + ] +]; diff --git a/kirby/config/helpers.php b/kirby/config/helpers.php index b68104d..4bb92e6 100755 --- a/kirby/config/helpers.php +++ b/kirby/config/helpers.php @@ -66,16 +66,16 @@ function csrf(string $check = null) if (func_num_args() === 0) { // no arguments, generate/return a token - $token = $session->get('csrf'); + $token = $session->get('kirby.csrf'); if (is_string($token) !== true) { $token = bin2hex(random_bytes(32)); - $session->set('csrf', $token); + $session->set('kirby.csrf', $token); } return $token; - } elseif (is_string($check) === true && is_string($session->get('csrf')) === true) { + } elseif (is_string($check) === true && is_string($session->get('kirby.csrf')) === true) { // argument has been passed, check the token - return hash_equals($session->get('csrf'), $check) === true; + return hash_equals($session->get('kirby.csrf'), $check) === true; } return false; @@ -747,10 +747,10 @@ function tc($key, int $count) * by the defined step * * @param string $date - * @param int $step + * @param int $step array of `unit` and `size` to round to nearest * @return string|null */ -function timestamp(string $date = null, int $step = null): ?string +function timestamp(string $date = null, $step = null): ?string { if (V::date($date) === false) { return null; @@ -762,13 +762,46 @@ function timestamp(string $date = null, int $step = null): ?string return $date; } - $hours = date('H', $date); - $minutes = date('i', $date); - $minutes = floor($minutes / $step) * $step; - $minutes = str_pad($minutes, 2, 0, STR_PAD_LEFT); - $date = date('Y-m-d', $date) . ' ' . $hours . ':' . $minutes; + if (is_int($step) === true) { + $step = [ + 'unit' => 'minute', + 'size' => 1 + ]; + } - return strtotime($date); + if (is_array($step) === false) { + return $date; + } + + $parts = [ + 'second' => date('s', $date), + 'minute' => date('i', $date), + 'hour' => date('H', $date), + 'day' => date('d', $date), + 'month' => date('m', $date), + 'year' => date('Y', $date), + ]; + + $current = $parts[$step['unit']]; + $nearest = round($current / $step['size']) * $step['size']; + $parts[$step['unit']] = $nearest; + + foreach ($parts as $part => $value) { + if ($part === $step['unit']) { + break; + } + + $parts[$part] = 0; + } + + return strtotime( + $parts['year'] . '-' . + str_pad($parts['month'], 2, 0, STR_PAD_LEFT) . '-' . + str_pad($parts['day'], 2, 0, STR_PAD_LEFT) . ' ' . + str_pad($parts['hour'], 2, 0, STR_PAD_LEFT) . ':' . + str_pad($parts['minute'], 2, 0, STR_PAD_LEFT) . ':' . + str_pad($parts['second'], 2, 0, STR_PAD_LEFT) + ); } /** @@ -829,6 +862,36 @@ function url(string $path = null, $options = null): string return Url::to($path, $options); } +/** + * Creates a compliant v4 UUID + * Taken from: https://github.com/symfony/polyfill + * + * @return string + */ +function uuid(): string +{ + $uuid = bin2hex(random_bytes(16)); + + return sprintf( + '%08s-%04s-4%03s-%04x-%012s', + // 32 bits for "time_low" + substr($uuid, 0, 8), + // 16 bits for "time_mid" + substr($uuid, 8, 4), + // 16 bits for "time_hi_and_version", + // four most significant bits holds version number 4 + substr($uuid, 13, 3), + // 16 bits: + // * 8 bits for "clk_seq_hi_res", + // * 8 bits for "clk_seq_low", + // two most significant bits holds zero and one for variant DCE1.1 + hexdec(substr($uuid, 16, 4)) & 0x3fff | 0x8000, + // 48 bits for "node" + substr($uuid, 20, 12) + ); +} + + /** * Creates a video embed via iframe for Youtube or Vimeo * videos. The embed Urls are automatically detected from diff --git a/kirby/config/methods.php b/kirby/config/methods.php index f506fad..d3ea38b 100755 --- a/kirby/config/methods.php +++ b/kirby/config/methods.php @@ -1,9 +1,11 @@ function (Field $field) { + try { + $blocks = Blocks::factory(Blocks::parse($field->value()), [ + 'parent' => $field->parent(), + ]); + + return $blocks->filter('isHidden', false); + } catch (Throwable $e) { + if ($field->parent() === null) { + $message = 'Invalid blocks data for "' . $field->key() . '" field'; + } else { + $message = 'Invalid blocks data for "' . $field->key() . '" field on parent "' . $field->parent()->title() . '"'; + } + + throw new InvalidArgumentException($message); + } + }, + + /** + * Converts the field value into a proper boolean + * + * @param \Kirby\Cms\Field $field + * @param bool $default Default value if the field is empty + * @return bool + */ + 'toBool' => function (Field $field, $default = false): bool { + $value = $field->isEmpty() ? $default : $field->value; + return filter_var($value, FILTER_VALIDATE_BOOLEAN); + }, /** * Parses the field value with the given method @@ -71,18 +108,6 @@ return function (App $app) { } }, - /** - * Converts the field value into a proper boolean - * - * @param \Kirby\Cms\Field $field - * @param bool $default Default value if the field is empty - * @return bool - */ - 'toBool' => function (Field $field, $default = false): bool { - $value = $field->isEmpty() ? $default : $field->value; - return filter_var($value, FILTER_VALIDATE_BOOLEAN); - }, - /** * Converts the field value to a timestamp or a formatted date * @@ -159,6 +184,19 @@ return function (App $app) { return (int)$value; }, + /** + * Parse layouts and turn them into + * Layout objects + * + * @param \Kirby\Cms\Field $field + * @return \Kirby\Cms\Layouts + */ + 'toLayouts' => function (Field $field) { + return Layouts::factory(Data::decode($field->value, 'json'), [ + 'parent' => $field->parent() + ]); + }, + /** * Wraps a link tag around the field value. The field value is used as the link text * diff --git a/kirby/config/roots.php b/kirby/config/roots.php index c473763..d4f5b20 100755 --- a/kirby/config/roots.php +++ b/kirby/config/roots.php @@ -67,6 +67,9 @@ return [ 'languages' => function (array $roots) { return $roots['site'] . '/languages'; }, + 'logs' => function (array $roots) { + return $roots['site'] . '/logs'; + }, 'models' => function (array $roots) { return $roots['site'] . '/models'; }, diff --git a/kirby/config/sections/fields.php b/kirby/config/sections/fields.php index 84c9276..c9a2661 100755 --- a/kirby/config/sections/fields.php +++ b/kirby/config/sections/fields.php @@ -41,25 +41,15 @@ return [ } return $fields; - }, + } + ], + 'methods' => [ 'errors' => function () { return $this->form->errors(); - }, - 'data' => function () { - $values = $this->form->values(); - - if (is_a($this->model, 'Kirby\Cms\Page') === true || is_a($this->model, 'Kirby\Cms\Site') === true) { - // the title should never be updated directly via - // fields section to avoid conflicts with the rename dialog - unset($values['title']); - } - - return $values; } ], 'toArray' => function () { return [ - 'errors' => $this->errors, 'fields' => $this->fields, ]; } diff --git a/kirby/config/sections/files.php b/kirby/config/sections/files.php index 378b9f8..52fe133 100755 --- a/kirby/config/sections/files.php +++ b/kirby/config/sections/files.php @@ -72,7 +72,7 @@ return [ 'template' => $this->template ]); - return $file->blueprint()->accept()['mime'] ?? '*'; + return $file->blueprint()->acceptMime(); } return null; @@ -84,12 +84,12 @@ return [ $files = $this->parent->files()->template($this->template); // filter out all protected files - $files = $files->filterBy('isReadable', true); + $files = $files->filter('isReadable', true); if ($this->sortBy) { - $files = $files->sortBy(...$files::sortArgs($this->sortBy)); - } elseif ($this->sortable === true) { - $files = $files->sortBy('sort', 'asc', 'filename', 'asc'); + $files = $files->sort(...$files::sortArgs($this->sortBy)); + } else { + $files = $files->sort('sort', 'asc', 'filename', 'asc'); } // flip @@ -206,13 +206,15 @@ return [ $multiple = true; } + $template = $this->template === 'default' ? null : $this->template; + return [ 'accept' => $this->accept, 'multiple' => $multiple, 'max' => $max, 'api' => $this->parent->apiUrl(true) . '/files', 'attributes' => array_filter([ - 'template' => $this->template + 'template' => $template ]) ]; } diff --git a/kirby/config/sections/pages.php b/kirby/config/sections/pages.php index db51d99..d924e06 100755 --- a/kirby/config/sections/pages.php +++ b/kirby/config/sections/pages.php @@ -126,7 +126,7 @@ return [ // sort if ($this->sortBy) { - $pages = $pages->sortBy(...$pages::sortArgs($this->sortBy)); + $pages = $pages->sort(...$pages::sortArgs($this->sortBy)); } // flip @@ -165,7 +165,9 @@ return [ 'status' => $item->status(), 'permissions' => [ 'sort' => $permissions->can('sort'), - 'changeStatus' => $permissions->can('changeStatus') + 'changeSlug' => $permissions->can('changeSlug'), + 'changeStatus' => $permissions->can('changeStatus'), + 'changeTitle' => $permissions->can('changeTitle') ] ]; } diff --git a/kirby/config/snippets.php b/kirby/config/snippets.php new file mode 100755 index 0000000..cdfadc6 --- /dev/null +++ b/kirby/config/snippets.php @@ -0,0 +1,17 @@ + $blocksRoot . '/code/code.php', + 'blocks/gallery' => $blocksRoot . '/gallery/gallery.php', + 'blocks/heading' => $blocksRoot . '/heading/heading.php', + 'blocks/image' => $blocksRoot . '/image/image.php', + 'blocks/list' => $blocksRoot . '/list/list.php', + 'blocks/markdown' => $blocksRoot . '/markdown/markdown.php', + 'blocks/quote' => $blocksRoot . '/quote/quote.php', + 'blocks/table' => $blocksRoot . '/table/table.php', + 'blocks/text' => $blocksRoot . '/text/text.php', + 'blocks/video' => $blocksRoot . '/video/video.php', +]; diff --git a/kirby/config/templates.php b/kirby/config/templates.php new file mode 100755 index 0000000..b699394 --- /dev/null +++ b/kirby/config/templates.php @@ -0,0 +1,8 @@ + __DIR__ . '/templates/emails/auth/login.php', + 'emails/auth/password-reset' => __DIR__ . '/templates/emails/auth/password-reset.php' +]; +// @codeCoverageIgnoreEnd diff --git a/kirby/config/templates/emails/auth/login.php b/kirby/config/templates/emails/auth/login.php new file mode 100755 index 0000000..39ddcc0 --- /dev/null +++ b/kirby/config/templates/emails/auth/login.php @@ -0,0 +1,3 @@ +/site/blueprints/{template}.yml", "file.delete.confirm": "Сигурни ли сте, че искате да изтриете
{filename}?", + "file.sort": "Change position", "files": "Файлове", "files.empty": "Няма файлове", + "hide": "Hide", "hour": "Hour", "insert": "\u0412\u043c\u044a\u043a\u043d\u0438", + "insert.after": "Insert after", + "insert.before": "Insert before", "install": "Инсталирай", "installation": "Инсталация", @@ -259,7 +326,20 @@ "lock.isUnlocked": "Your unsaved changes have been overwritten by another user. You can download your changes to merge them manually.", "login": "Вход", + "login.code.label.login": "Login code", + "login.code.label.password-reset": "Password reset code", + "login.code.placeholder.email": "000 000", + "login.code.text.email": "If your email address is registered, the requested code was sent via email.", + "login.email.login.body": "Hi {user.nameOrEmail},\n\nYou recently requested a login code for the Kirby Panel.\nThe following login code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a login code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.", + "login.email.login.subject": "Your login code", + "login.email.password-reset.body": "Hi {user.nameOrEmail},\n\nYou recently requested a password reset code for the Kirby Panel.\nThe following password reset code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a password reset code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.", + "login.email.password-reset.subject": "Your password reset code", "login.remember": "Keep me logged in", + "login.reset": "Reset password", + "login.toggleText.code.email": "Login via email", + "login.toggleText.code.email-password": "Login with password", + "login.toggleText.password-reset.email": "Forgot your password?", + "login.toggleText.password-reset.email-password": "← Back to login", "logout": "Изход", @@ -296,6 +376,7 @@ "orientation.portrait": "Портрет", "orientation.square": "Квадрат", + "page.blueprint": "This page has no blueprint yet. You can define the setup in /site/blueprints/{template}.yml", "page.changeSlug": "\u041f\u0440\u043e\u043c\u0435\u043d\u0438 URL", "page.changeSlug.fromTitle": "\u0421\u044a\u0437\u0434\u0430\u0439\u0442\u0435 \u043e\u0442 \u0437\u0430\u0433\u043b\u0430\u0432\u0438\u0435\u0442\u043e", "page.changeStatus": "Промени статус", @@ -309,6 +390,7 @@ "page.duplicate.appendix": "Копирай", "page.duplicate.files": "Copy files", "page.duplicate.pages": "Copy pages", + "page.sort": "Change position", "page.status": "Status", "page.status.draft": "Чернова", "page.status.draft.description": "The page is in draft mode and only visible for logged in editors or via secret link", @@ -328,6 +410,7 @@ "password": "\u041f\u0430\u0440\u043e\u043b\u0430", "pixel": "Пиксел", "prev": "Previous", + "preview": "Preview", "remove": "Премахни", "rename": "Преименувай", "replace": "\u0417\u0430\u043c\u0435\u0441\u0442\u0438", @@ -354,6 +437,7 @@ "select": "Избери", "settings": "Настройки", + "show": "Show", "size": "Размер", "slug": "URL-\u0434\u043e\u0431\u0430\u0432\u043a\u0430", "sort": "Сортирай", @@ -361,6 +445,8 @@ "template": "Образец", "today": "Днес", + "site.blueprint": "The site has no blueprint yet. You can define the setup in /site/blueprints/site.yml", + "toolbar.button.code": "Код", "toolbar.button.bold": "\u041f\u043e\u043b\u0443\u0447\u0435\u0440 \u0448\u0440\u0438\u0444\u0442", "toolbar.button.email": "Email", @@ -419,6 +505,7 @@ "view.account": "\u0412\u0430\u0448\u0438\u044f \u0430\u043a\u0430\u0443\u043d\u0442", "view.installation": "\u0418\u043d\u0441\u0442\u0430\u043b\u0430\u0446\u0438\u044f", + "view.resetPassword": "Reset password", "view.settings": "Настройки", "view.site": "Сайт", "view.users": "\u041f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u0438", diff --git a/kirby/i18n/translations/ca.json b/kirby/i18n/translations/ca.json index e7c5bbe..39fb448 100755 --- a/kirby/i18n/translations/ca.json +++ b/kirby/i18n/translations/ca.json @@ -6,6 +6,8 @@ "change": "Canviar", "close": "Tancar", "confirm": "Ok", + "collapse": "Collapse", + "collapse.all": "Collapse All", "copy": "Copiar", "create": "Crear", @@ -22,12 +24,15 @@ "days.wed": "dc.", "delete": "Eliminar", + "delete.all": "Delete all", "dimensions": "Dimensions", "disabled": "Desactivat", "discard": "Descartar", "download": "Descarregar", "duplicate": "Duplicar", "edit": "Editar", + "expand": "Expand", + "expand.all": "Expand All", "dialog.files.empty": "No hi ha cap fitxer per seleccionar", "dialog.pages.empty": "No hi ha cap pàgina per seleccionar", @@ -36,6 +41,7 @@ "email": "Email", "email.placeholder": "mail@exemple.com", + "error.access.code": "Invalid code", "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", @@ -47,6 +53,12 @@ "error.blueprint.notFound": "No s'ha potgut carregar el blueprint \"{name}\"", + "error.blocks.max.plural": "You must not add more than {max} blocks", + "error.blocks.max.singular": "You must not add more than one block", + "error.blocks.min.plural": "You must add at least {min} blocks", + "error.blocks.min.singular": "You must add at least one block", + "error.blocks.validation": "There's an error in block {index}", + "error.email.preset.notFound": "No es pot trobar la configuració de correu electrònic \"{name}\"", "error.field.converter.invalid": "Convertidor no vàlid \"{converter}\"", @@ -185,22 +197,77 @@ "error.validation.size": "La mida del valor ha de ser \"{size}\"", "error.validation.startswith": "El valor ha de començar amb \"{start}\"", "error.validation.time": "Si us plau, introduïu una hora vàlida", + "error.validation.time.after": "Please enter a time after {time}", + "error.validation.time.before": "Please enter a time before {time}", + "error.validation.time.between": "Please enter a time between {min} and {max}", "error.validation.url": "Si us plau, introduïu una URL vàlida", "field.required": "El camp és obligatori", + "field.blocks.changeType": "Change type", + "field.blocks.code.name": "Codi", + "field.blocks.code.language": "Idioma", + "field.blocks.code.placeholder": "Your code …", + "field.blocks.delete.confirm": "Do you really want to delete this block?", + "field.blocks.delete.confirm.all": "Do you really want to delete all blocks?", + "field.blocks.delete.confirm.selected": "Do you really want to delete the selected blocks?", + "field.blocks.empty": "No blocks yet", + "field.blocks.fieldsets.label": "Please select a block type …", + "field.blocks.gallery.name": "Gallery", + "field.blocks.gallery.images.empty": "No images yet", + "field.blocks.gallery.images.label": "Images", + "field.blocks.heading.level": "Level", + "field.blocks.heading.name": "Heading", + "field.blocks.heading.text": "Text", + "field.blocks.heading.placeholder": "Heading …", + "field.blocks.image.alt": "Alternative text", + "field.blocks.image.caption": "Caption", + "field.blocks.image.crop": "Crop", + "field.blocks.image.link": "Enllaç", + "field.blocks.image.location": "Location", + "field.blocks.image.name": "Imatge", + "field.blocks.image.placeholder": "Select an image", + "field.blocks.image.ratio": "Ratio", + "field.blocks.list.name": "List", + "field.blocks.markdown.name": "Markdown", + "field.blocks.markdown.label": "Text", + "field.blocks.markdown.placeholder": "Markdown …", + "field.blocks.quote.name": "Quote", + "field.blocks.quote.text.label": "Text", + "field.blocks.quote.text.placeholder": "Quote …", + "field.blocks.quote.citation.label": "Citation", + "field.blocks.quote.citation.placeholder": "by …", + "field.blocks.text.name": "Text", + "field.blocks.text.placeholder": "Text …", + "field.blocks.video.caption": "Caption", + "field.blocks.video.name": "Video", + "field.blocks.video.placeholder": "Enter a video URL", + "field.blocks.video.url.label": "Video-URL", + "field.blocks.video.url.placeholder": "https://youtube.com/?v=", + "field.files.empty": "Encara no hi ha cap fitxer seleccionat", + + "field.layout.delete": "Delete layout", + "field.layout.delete.confirm": "Do you really want to delete this layout?", + "field.layout.empty": "No rows yet", + "field.layout.select": "Select a layout", + "field.pages.empty": "Encara no s'ha seleccionat cap pàgina", "field.structure.delete.confirm": "Segur que voleu eliminar aquesta fila?", "field.structure.empty": "Encara no hi ha entrades.", "field.users.empty": "Encara no s'ha seleccionat cap usuari", + "file.blueprint": "This file has no blueprint yet. You can define the setup in /site/blueprints/{template}.yml", "file.delete.confirm": "Esteu segurs d'eliminar
{filename}?", + "file.sort": "Change position", "files": "Arxius", "files.empty": "Encara no hi ha fitxers", + "hide": "Hide", "hour": "Hora", "insert": "Insertar", + "insert.after": "Insert after", + "insert.before": "Insert before", "install": "Instal·lar", "installation": "Instal·lació", @@ -259,7 +326,20 @@ "lock.isUnlocked": "Els teus canvis sense guardar han estat sobreescrits per a un altra usuario. Pots descarregar els teus canvis per combinar-los manualment.", "login": "Entrar", + "login.code.label.login": "Login code", + "login.code.label.password-reset": "Password reset code", + "login.code.placeholder.email": "000 000", + "login.code.text.email": "If your email address is registered, the requested code was sent via email.", + "login.email.login.body": "Hi {user.nameOrEmail},\n\nYou recently requested a login code for the Kirby Panel.\nThe following login code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a login code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.", + "login.email.login.subject": "Your login code", + "login.email.password-reset.body": "Hi {user.nameOrEmail},\n\nYou recently requested a password reset code for the Kirby Panel.\nThe following password reset code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a password reset code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.", + "login.email.password-reset.subject": "Your password reset code", "login.remember": "Manten-me connectat", + "login.reset": "Reset password", + "login.toggleText.code.email": "Login via email", + "login.toggleText.code.email-password": "Login with password", + "login.toggleText.password-reset.email": "Forgot your password?", + "login.toggleText.password-reset.email-password": "← Back to login", "logout": "Tancar sessi\u00f3", @@ -296,6 +376,7 @@ "orientation.portrait": "Vertical", "orientation.square": "Quadrat", + "page.blueprint": "This page has no blueprint yet. You can define the setup in /site/blueprints/{template}.yml", "page.changeSlug": "Canviar URL", "page.changeSlug.fromTitle": "Crear a partir del t\u00edtol", "page.changeStatus": "Canviar l'estat", @@ -309,6 +390,7 @@ "page.duplicate.appendix": "Copiar", "page.duplicate.files": "Copiar fitxers", "page.duplicate.pages": "Copiar pàgines", + "page.sort": "Change position", "page.status": "Estat", "page.status.draft": "Esborrany", "page.status.draft.description": "La pàgina està en mode d'esborrany i només és visible per als editors registrats o a través d'un enllaç secret", @@ -328,6 +410,7 @@ "password": "Contrasenya", "pixel": "Pixel", "prev": "Anterior", + "preview": "Preview", "remove": "Eliminar", "rename": "Canviar el nom", "replace": "Reempla\u00e7ar", @@ -354,6 +437,7 @@ "select": "Seleccionar", "settings": "Configuració", + "show": "Show", "size": "Tamany", "slug": "URL-ap\u00e8ndix", "sort": "Ordenar", @@ -361,6 +445,8 @@ "template": "Plantilla", "today": "Avui", + "site.blueprint": "The site has no blueprint yet. You can define the setup in /site/blueprints/site.yml", + "toolbar.button.code": "Codi", "toolbar.button.bold": "Negreta", "toolbar.button.email": "Email", @@ -419,6 +505,7 @@ "view.account": "La teva compta", "view.installation": "Instal·lació", + "view.resetPassword": "Reset password", "view.settings": "Configuració", "view.site": "Lloc web", "view.users": "Usuaris", diff --git a/kirby/i18n/translations/cs.json b/kirby/i18n/translations/cs.json index 07e6ba9..bacfa26 100755 --- a/kirby/i18n/translations/cs.json +++ b/kirby/i18n/translations/cs.json @@ -6,6 +6,8 @@ "change": "Zm\u011bnit", "close": "Zav\u0159it", "confirm": "Ok", + "collapse": "Sbalit", + "collapse.all": "Sbalit vše", "copy": "Kopírovat", "create": "Vytvořit", @@ -22,12 +24,15 @@ "days.wed": "st", "delete": "Smazat", + "delete.all": "Smazat vše", "dimensions": "Rozměry", "disabled": "Zakázáno", "discard": "Zahodit", "download": "Stáhnout", "duplicate": "Duplikovat", "edit": "Upravit", + "expand": "Rozbalit", + "expand.all": "Rozbalit vše", "dialog.files.empty": "Žádné soubory k výběru", "dialog.pages.empty": "Žádné stránky k výběru", @@ -36,6 +41,7 @@ "email": "Email", "email.placeholder": "mail@example.com", + "error.access.code": "Neplatný kód", "error.access.login": "Neplatné přihlášení", "error.access.panel": "Nemáte povoleno vstoupit do panelu", "error.access.view": "Nejste oprávněni vstoupit do této části panelu.", @@ -47,6 +53,12 @@ "error.blueprint.notFound": "Nelze načíst blueprint \"{name}\" ", + "error.blocks.max.plural": "Nelze přidat více něž {max} bloků", + "error.blocks.max.singular": "Nelze přidat více než jeden blok", + "error.blocks.min.plural": "Musíte přidat alespoň {min} bloků", + "error.blocks.min.singular": "Musíte přidat alespoň jeden blok", + "error.blocks.validation": "Chyba v bloku {index}", + "error.email.preset.notFound": "Nelze nalézt emailové přednastavení \"{name}\"", "error.field.converter.invalid": "Neplatný konvertor \"{converter}\"", @@ -102,6 +114,7 @@ "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á.", "error.page.slug.invalid": "Zadejte prosím platnou předponu URL", + "error.page.slug.maxlength": "URL musí mít méně než \"{length}\" znaků", "error.page.sort.permission": "Stránce \"{slug}\" nelze změnit pořadí", "error.page.status.invalid": "Nastavte prosím platný status stránky", "error.page.undefined": "Str\u00e1nku se nepoda\u0159ilo nal\u00e9zt.", @@ -184,22 +197,77 @@ "error.validation.size": "Velikost hodnoty musí být \"{size}\"", "error.validation.startswith": "Hodnota musí začínat \"{start}\"", "error.validation.time": "Zadejte prosím platný čas", + "error.validation.time.after": "Zadejte prosím čas po {time}", + "error.validation.time.before": "Zadejte prosím čas před {time}", + "error.validation.time.between": "Zadejte prosím čas v rozmezí od {min} do {max}", "error.validation.url": "Zadejte prosím platnou adresu URL", "field.required": "Pole musí být vyplněno.", + "field.blocks.changeType": "Změnit typ", + "field.blocks.code.name": "Kód", + "field.blocks.code.language": "Jazyk", + "field.blocks.code.placeholder": "Váš kód …", + "field.blocks.delete.confirm": "Opravdu chcete smazat tento blok?", + "field.blocks.delete.confirm.all": "Opravdu chcete smazat všechny bloky?", + "field.blocks.delete.confirm.selected": "Opravdu chcete smazat vybrané bloky?", + "field.blocks.empty": "Zatím žádné bloky", + "field.blocks.fieldsets.label": "Vyberte prosím typ bloku …", + "field.blocks.gallery.name": "Galerie", + "field.blocks.gallery.images.empty": "Zatím žádné obrázky", + "field.blocks.gallery.images.label": "Obrázky", + "field.blocks.heading.level": "Úroveň", + "field.blocks.heading.name": "Nadpis", + "field.blocks.heading.text": "Text", + "field.blocks.heading.placeholder": "Nadpis …", + "field.blocks.image.alt": "Alternativní text", + "field.blocks.image.caption": "Titulek", + "field.blocks.image.crop": "Oříznout", + "field.blocks.image.link": "Odkaz", + "field.blocks.image.location": "Pozice", + "field.blocks.image.name": "Obrázek", + "field.blocks.image.placeholder": "Vyberte obrázek", + "field.blocks.image.ratio": "Poměr stran", + "field.blocks.list.name": "Seznam", + "field.blocks.markdown.name": "Markdown", + "field.blocks.markdown.label": "Text", + "field.blocks.markdown.placeholder": "Markdown …", + "field.blocks.quote.name": "Citát", + "field.blocks.quote.text.label": "Text", + "field.blocks.quote.text.placeholder": "Citát …", + "field.blocks.quote.citation.label": "Citace", + "field.blocks.quote.citation.placeholder": "od …", + "field.blocks.text.name": "Text", + "field.blocks.text.placeholder": "Text …", + "field.blocks.video.caption": "Titulek", + "field.blocks.video.name": "Video", + "field.blocks.video.placeholder": "Zadejte URL adresu videa", + "field.blocks.video.url.label": "URL adresa videa", + "field.blocks.video.url.placeholder": "https://youtube.com/?v=", + "field.files.empty": "Nebyly zatím vybrány žádné soubory", + + "field.layout.delete": "Smazat rozložení", + "field.layout.delete.confirm": "Opravdu chcete smazat toto rozložení?", + "field.layout.empty": "Zatím žádné řádky", + "field.layout.select": "Vyberte rozložení", + "field.pages.empty": "Nebyly zatím vybrány žádné stránky", "field.structure.delete.confirm": "Opravdu chcete smazat tento z\u00e1znam?", "field.structure.empty": "Zat\u00edm nejsou \u017e\u00e1dn\u00e9 z\u00e1znamy.", "field.users.empty": "Nebyli zatím vybráni žádní uživatelé", + "file.blueprint": "Tento typ souboru nemá blueprint. Blueprint můžete definovat v /site/blueprints/{template}.yml", "file.delete.confirm": "Opravdu chcete smazat tento soubor?", + "file.sort": "Změnit pozici", "files": "Soubory", "files.empty": "Zatím žádné soubory", + "hide": "Skrýt", "hour": "Hodina", "insert": "Vlo\u017eit", + "insert.after": "Vložit za", + "insert.before": "Vložit před", "install": "Instalovat", "installation": "Instalace", @@ -258,7 +326,20 @@ "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.code.label.login": "Kód pro přihlášení", + "login.code.label.password-reset": "Kód pro resetování hesla", + "login.code.placeholder.email": "000 000", + "login.code.text.email": "Vaše e-mailová adresa byla zaregistrována, kód byl odeslán do Vaší e-mailové schránky.", + "login.email.login.body": "Ahoj {user.nameOrEmail},\n\nV nedávné době jsi zažádal(a) o kód pro přihlášení do Kirby Panelu.\nNásledující kód pro přihlášení je platný {timeout} minut:\n\n{code}\n\nPokud jsi o kód pro přihlášení nežádal(a), tuto zprávu prosím ignoruj a v případě dotazů prosím kontaktuj svého administrátora.\nZ bezpečnostních důvodů prosím tuto zprávu nepřeposílej.", + "login.email.login.subject": "Váš kód pro přihlášení", + "login.email.password-reset.body": "Ahoj {user.nameOrEmail},\n\nV nedávné době jsi zažádal(a) o kód pro přihlášení do Kirby Panelu.\nNásledující kód pro přihlášení je platný {timeout} minut:\n\n{code}\n\nPokud jsi o kód pro přihlášení nežádal(a), tuto zprávu prosím ignoruj a v případě dotazů prosím kontaktuj svého administrátora.\nZ bezpečnostních důvodů prosím tuto zprávu nepřeposílej.", + "login.email.password-reset.subject": "Váš kód pro resetování hesla", "login.remember": "Zůstat přihlášen", + "login.reset": "Resetovat heslo", + "login.toggleText.code.email": "Přihlásit se pomocí e-mailu", + "login.toggleText.code.email-password": "Přihlásit se pomocí hesla", + "login.toggleText.password-reset.email": "Zapomenuté heslo?", + "login.toggleText.password-reset.email-password": "← Zpět na přihlášení", "logout": "Odhl\u00e1sit se", @@ -288,12 +369,14 @@ "on": "zapnuto", "open": "Otevřít", "options": "Možnosti", + "options.none": "Žádné možnosti", "orientation": "Orientace", "orientation.landscape": "Na šířku", "orientation.portrait": "Na výšku", "orientation.square": "Čtverec", + "page.blueprint": "Tento typ stránky nemá blueprint. Blueprint můžete definovat v /site/blueprints/{template}.yml", "page.changeSlug": "Zm\u011bnit URL", "page.changeSlug.fromTitle": "Vytvo\u0159it z n\u00e1zvu", "page.changeStatus": "Změnit status", @@ -307,6 +390,7 @@ "page.duplicate.appendix": "Kopírovat", "page.duplicate.files": "Kopírovat soubory", "page.duplicate.pages": "Kopírovat stránky", + "page.sort": "Změnit pozici", "page.status": "Stav", "page.status.draft": "Koncept", "page.status.draft.description": "Stránka je ve stavu konceptu a je viditelná pouze pro přihlášené editory, nebo přes tajný odkaz", @@ -326,6 +410,7 @@ "password": "Heslo", "pixel": "Pixel", "prev": "Předchozí", + "preview": "Náhled", "remove": "Odstranit", "rename": "Přejmenovat", "replace": "Nahradit", @@ -344,11 +429,15 @@ "save": "Ulo\u017eit", "search": "Hledat", + "search.min": "Pro vyhledání zadejte alespoň {min} znaky", + "search.all": "Zobrazit vše", + "search.results.none": "Žádné výsledky", "section.required": "Sekce musí být vyplněna", "select": "Vybrat", "settings": "Nastavení", + "show": "Zobrazit", "size": "Velikost", "slug": "P\u0159\u00edpona URL", "sort": "Řadit", @@ -356,6 +445,8 @@ "template": "\u0160ablona", "today": "Dnes", + "site.blueprint": "Hlavní panel nemá blueprint. Blueprint můžete definovat v /site/blueprints/site.yml", + "toolbar.button.code": "Kód", "toolbar.button.bold": "Tu\u010dn\u00fd text", "toolbar.button.email": "Email", @@ -414,6 +505,7 @@ "view.account": "V\u00e1\u0161 \u00fa\u010det", "view.installation": "Instalace", + "view.resetPassword": "Resetovat heslo", "view.settings": "Nastavení", "view.site": "Stránka", "view.users": "U\u017eivatel\u00e9", diff --git a/kirby/i18n/translations/da.json b/kirby/i18n/translations/da.json index f34bea9..5142592 100755 --- a/kirby/i18n/translations/da.json +++ b/kirby/i18n/translations/da.json @@ -6,6 +6,8 @@ "change": "\u00c6ndre", "close": "Luk", "confirm": "Gem", + "collapse": "Fold sammen", + "collapse.all": "Fold alle sammen", "copy": "Kopier", "create": "Opret", @@ -22,12 +24,15 @@ "days.wed": "Ons", "delete": "Slet", + "delete.all": "Slet alle", "dimensions": "Dimensioner", "disabled": "Deaktiveret", "discard": "Kass\u00e9r", "download": "Download", "duplicate": "Dupliker", "edit": "Rediger", + "expand": "Fold ud", + "expand.all": "Fold alle ud", "dialog.files.empty": "Ingen filer kan vælges", "dialog.pages.empty": "Ingen sider kan vælges", @@ -36,6 +41,7 @@ "email": "Email", "email.placeholder": "mail@eksempel.dk", + "error.access.code": "Invalid code", "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", @@ -47,6 +53,12 @@ "error.blueprint.notFound": "Blueprint \"{name}\" kunne ikke indlæses", + "error.blocks.max.plural": "Du må ikke tilføje flere end {max} blokke", + "error.blocks.max.singular": "Du må ikke tilføje mere end een blok", + "error.blocks.min.plural": "Du skal tilføje minimum {min} blokke", + "error.blocks.min.singular": "Du skal tilføje minimum een blok", + "error.blocks.validation": "Der er fejl i blok {index}", + "error.email.preset.notFound": "Email preset \"{name}\" findes ikke", "error.field.converter.invalid": "Ugyldig converter \"{converter}\"", @@ -83,7 +95,7 @@ "error.license.email": "Indtast venligst en gyldig email adresse", "error.license.verification": "Licensen kunne ikke verificeres", - "error.page.changeSlug.permission": "Du kan ikke \u00e6ndre denne sides URL", + "error.page.changeSlug.permission": "Du kan ikke ændre URL-endelse for \"{slug}\"", "error.page.changeStatus.incomplete": "Siden indeholder fejl og kan derfor ikke udgives", "error.page.changeStatus.permission": "Status for denne side kan ikke ændres", "error.page.changeStatus.toDraft.invalid": "Siden \"{slug}\" kan ikke konverteres om til en kladde", @@ -102,21 +114,21 @@ "error.page.notFound": "Siden kunne ikke findes", "error.page.num.invalid": "Indtast venligst et gyldigt sorteringsnummer. Nummeret kan ikke være negativt.", "error.page.slug.invalid": "Indtast venligst en gyldig URL prefix", - "error.page.slug.maxlength": "Slug length must be less than \"{length}\" characters", + "error.page.slug.maxlength": "Navnet skal være kortere end \"{length}\" tegn", "error.page.sort.permission": "Siden \"{slug}\" kan ikke sorteres", "error.page.status.invalid": "Sæt venligst en gyldig status for siden", "error.page.undefined": "Siden kunne ikke findes", "error.page.update.permission": "Du har ikke tilladelse til at opdatere \"{slug}\"", "error.section.files.max.plural": "Du kan ikk tilføje mere end {max} filer til \"{section}\" sektionen", - "error.section.files.max.singular": "Du kan ikke tilføje mere end en fil til \"{section}\" sektionen", + "error.section.files.max.singular": "Du kan ikke tilføje mere end een fil til \"{section}\" sektionen", "error.section.files.min.plural": "Sektionen \"{section}\" kræver mindst {min} filer", - "error.section.files.min.singular": "Sektionen \"{section}\" kræver mindst en fil", + "error.section.files.min.singular": "Sektionen \"{section}\" kræver mindst een fil", "error.section.pages.max.plural": "Du kan ikke tilføje flere end {max} sider til \"{section}\" sektionen", "error.section.pages.max.singular": "Du kan ikke tilføje mere end een side til \"{section}\" sektionen", "error.section.pages.min.plural": "Sektionen \"{section}\" kræver mindst {min} sider", - "error.section.pages.min.singular": "Sektionen \"{section}\" kræver mindst en side", + "error.section.pages.min.singular": "Sektionen \"{section}\" kræver mindst een side", "error.section.notLoaded": "Sektionen \"{section}\" kunne ikke indlæses", "error.section.type.invalid": "Sektionstypen \"{type}\" er ikke gyldig", @@ -185,22 +197,77 @@ "error.validation.size": "Størrelsen på værdien skal være \"{size}\"", "error.validation.startswith": "Værdien skal starte med \"{start}\"", "error.validation.time": "Indtast venligst et gyldigt tidspunkt", + "error.validation.time.after": "Indtast venligst et tidspunkt efter {time}", + "error.validation.time.before": "Indtast venligst et tidspunkt inden {time}", + "error.validation.time.between": "Indtast venligst et tidspunkt imellem {min} og {max}", "error.validation.url": "Indtast venligst en gyldig URL", "field.required": "Feltet er påkrævet", + "field.blocks.changeType": "Skift type", + "field.blocks.code.name": "Kode", + "field.blocks.code.language": "Sprog", + "field.blocks.code.placeholder": "Din kode …", + "field.blocks.delete.confirm": "Ønsker du virkelig at slette denne blok?", + "field.blocks.delete.confirm.all": "Ønsker du virkelig at slette alle blokke?", + "field.blocks.delete.confirm.selected": "Ønsker du virkelig at slette de valgte blokke?", + "field.blocks.empty": "Ingen blokke endnu", + "field.blocks.fieldsets.label": "Vælg venligst en blok type", + "field.blocks.gallery.name": "Galleri", + "field.blocks.gallery.images.empty": "Ingen billeder endnu", + "field.blocks.gallery.images.label": "Billeder", + "field.blocks.heading.level": "Niveau", + "field.blocks.heading.name": "Overskrift", + "field.blocks.heading.text": "Tekst", + "field.blocks.heading.placeholder": "Overskrift …", + "field.blocks.image.alt": "Alternativ tekst", + "field.blocks.image.caption": "Billedtekst", + "field.blocks.image.crop": "Beskær", + "field.blocks.image.link": "Link", + "field.blocks.image.location": "Location", + "field.blocks.image.name": "Billede", + "field.blocks.image.placeholder": "Vælg et billede", + "field.blocks.image.ratio": "Størrelsesforhold", + "field.blocks.list.name": "Liste", + "field.blocks.markdown.name": "Markdown", + "field.blocks.markdown.label": "Tekst", + "field.blocks.markdown.placeholder": "Markdown …", + "field.blocks.quote.name": "Citat", + "field.blocks.quote.text.label": "Tekst", + "field.blocks.quote.text.placeholder": "Citat …", + "field.blocks.quote.citation.label": "Citeret af", + "field.blocks.quote.citation.placeholder": "af …", + "field.blocks.text.name": "Tekst", + "field.blocks.text.placeholder": "Tekst …", + "field.blocks.video.caption": "Billedtekst", + "field.blocks.video.name": "Video", + "field.blocks.video.placeholder": "Indtast URL til en video", + "field.blocks.video.url.label": "Video-URL", + "field.blocks.video.url.placeholder": "https://youtube.com/?v=", + "field.files.empty": "Ingen filer valgt endnu", + + "field.layout.delete": "Slet layout", + "field.layout.delete.confirm": "Ønsker du virkelig at slette dette layout", + "field.layout.empty": "Ingen rækker endnu", + "field.layout.select": "Vælg et layout", + "field.pages.empty": "Ingen sider valgt endnu", "field.structure.delete.confirm": "\u00d8nsker du virkelig at slette denne indtastning?", "field.structure.empty": "Ingen indtastninger endnu.", "field.users.empty": "Ingen brugere er valgt", + "file.blueprint": "Denne fil har intet blueprint endnu. Du kan definere opsætningen i /site/blueprints/{template}.yml", "file.delete.confirm": "\u00d8nsker du virkelig at slette denne fil?", + "file.sort": "Skift position", "files": "Filer", "files.empty": "Ingen filer endnu", + "hide": "Skjul", "hour": "Time", "insert": "Inds\u00e6t", + "insert.after": "Indsæt efter", + "insert.before": "Indsæt før", "install": "Installer", "installation": "Installation", @@ -259,7 +326,20 @@ "lock.isUnlocked": "Dine ugemte ændringer er blevet overskrevet af en anden bruger. Du kan downloade dine ændringer for at flette dem ind manuelt.", "login": "Log ind", + "login.code.label.login": "Login code", + "login.code.label.password-reset": "Password reset code", + "login.code.placeholder.email": "000 000", + "login.code.text.email": "If your email address is registered, the requested code was sent via email.", + "login.email.login.body": "Hi {user.nameOrEmail},\n\nYou recently requested a login code for the Kirby Panel.\nThe following login code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a login code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.", + "login.email.login.subject": "Your login code", + "login.email.password-reset.body": "Hi {user.nameOrEmail},\n\nYou recently requested a password reset code for the Kirby Panel.\nThe following password reset code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a password reset code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.", + "login.email.password-reset.subject": "Your password reset code", "login.remember": "Forbliv logget ind", + "login.reset": "Nulstil adgangskode", + "login.toggleText.code.email": "Login via email", + "login.toggleText.code.email-password": "Login with password", + "login.toggleText.password-reset.email": "Forgot your password?", + "login.toggleText.password-reset.email-password": "← Back to login", "logout": "Log ud", @@ -289,13 +369,14 @@ "on": "Tænd", "open": "Åben", "options": "Indstillinger", - "options.none": "No options", + "options.none": "Ingen muligheder", "orientation": "Orientering", "orientation.landscape": "Landskab", "orientation.portrait": "Portræt", "orientation.square": "Kvadrat", + "page.blueprint": "Denne side har intet blueprint endnu. Du kan definere opsætningen i /site/blueprints/{template}.yml", "page.changeSlug": "\u00c6ndre URL", "page.changeSlug.fromTitle": "Generer udfra titel", "page.changeStatus": "Skift status", @@ -309,9 +390,10 @@ "page.duplicate.appendix": "Kopier", "page.duplicate.files": "Kopier filer", "page.duplicate.pages": "Kopier sider", + "page.sort": "Skift position", "page.status": "Status", "page.status.draft": "Kladde", - "page.status.draft.description": "The page is in draft mode and only visible for logged in editors or via secret link", + "page.status.draft.description": "Siden er i kladde udgave og er kun synlig for redaktører der er logget ind eller via hemmeligt link", "page.status.listed": "Offentlig", "page.status.listed.description": "Siden er offentlig for enhver", "page.status.unlisted": "Ulistede", @@ -328,12 +410,13 @@ "password": "Adgangskode", "pixel": "Pixel", "prev": "Forrige", + "preview": "Forhåndsvisning", "remove": "Fjern", "rename": "Omdøb", "replace": "Erstat", "retry": "Pr\u00f8v igen", "revert": "Kass\u00e9r", - "revert.confirm": "Do you really want to delete all unsaved changes?", + "revert.confirm": "Ønsker du virkelig at slette all ændringer der ikke er gemt?", "role": "Rolle", "role.admin.description": "Admin har alle rettigheder", @@ -346,14 +429,15 @@ "save": "Gem", "search": "Søg", - "search.min": "Enter {min} characters to search", - "search.all": "Show all", - "search.results.none": "No results", + "search.min": "Indtast {min} tegn for at søge", + "search.all": "Vis alle", + "search.results.none": "Ingen resultater", "section.required": "Sektionen er påkrævet", "select": "Vælg", "settings": "Indstillinger", + "show": "Vis", "size": "Størrelse", "slug": "URL-appendiks", "sort": "Sorter", @@ -361,6 +445,8 @@ "template": "Skabelon", "today": "Idag", + "site.blueprint": "Sitet har intet blueprint endnu. Du kan definere opsætningen i /site/blueprints/site.yml", + "toolbar.button.code": "Kode", "toolbar.button.bold": "Fed tekst", "toolbar.button.email": "Email", @@ -419,6 +505,7 @@ "view.account": "Din konto", "view.installation": "Installation", + "view.resetPassword": "Nulstil adgangskode", "view.settings": "Indstillinger", "view.site": "Website", "view.users": "Brugere", diff --git a/kirby/i18n/translations/de.json b/kirby/i18n/translations/de.json index 4a6f823..92dc58b 100755 --- a/kirby/i18n/translations/de.json +++ b/kirby/i18n/translations/de.json @@ -6,6 +6,8 @@ "change": "\u00c4ndern", "close": "Schlie\u00dfen", "confirm": "OK", + "collapse": "Zusammenklappen", + "collapse.all": "Alle zusammenklappen", "copy": "Kopieren", "create": "Erstellen", @@ -22,12 +24,15 @@ "days.wed": "Mi", "delete": "L\u00f6schen", + "delete.all": "Alle löschen", "dimensions": "Maße", "disabled": "Gesperrt", "discard": "Verwerfen", "download": "Download", "duplicate": "Duplizieren", "edit": "Bearbeiten", + "expand": "Aufklappen", + "expand.all": "Alle aufklappen", "dialog.files.empty": "Keine verfügbaren Dateien", "dialog.pages.empty": "Keine verfügbaren Seiten", @@ -36,6 +41,7 @@ "email": "E-Mail", "email.placeholder": "mail@beispiel.de", + "error.access.code": "Ungültiger Code", "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", @@ -47,6 +53,12 @@ "error.blueprint.notFound": "Das Blueprint \"{name}\" konnte nicht geladen werden.", + "error.blocks.max.plural": "Bitte füge nicht mehr als {max} Blöcke hinzu", + "error.blocks.max.singular": "Bitte füge nicht mehr als einen Block hinzu", + "error.blocks.min.plural": "Bitte füge mindestens {min} Blöcke hinzu", + "error.blocks.min.singular": "Bitte füge mindestens einen Block hinzu", + "error.blocks.validation": "Fehler in Block {index}", + "error.email.preset.notFound": "Die E-Mailvorlage \"{name}\" wurde nicht gefunden", "error.field.converter.invalid": "Ungültiger Konverter: \"{converter}\"", @@ -102,6 +114,7 @@ "error.page.notFound": "Die Seite \"{slug}\" konnte nicht gefunden werden", "error.page.num.invalid": "Bitte gib eine gültige Sortierungszahl an. Negative Zahlen sind nicht erlaubt.", "error.page.slug.invalid": "Bitte gib ein gültiges URL-Kürzel an", + "error.page.slug.maxlength": "Die Pfadlänge darf {length} Zeichen nicht überschreiten", "error.page.sort.permission": "Die Seite \"{slug}\" kann nicht umsortiert werden", "error.page.status.invalid": "Bitte gib einen gültigen Seitenstatus an", "error.page.undefined": "Die Seite konnte nicht gefunden werden", @@ -132,7 +145,7 @@ "error.user.changePassword.permission": "Du kannst das Passwort für den Account \"{name}\" nicht ändern", "error.user.changeRole.lastAdmin": "Die Rolle des letzten Accounts mit Administrationsrechten kann nicht geändert werden", "error.user.changeRole.permission": "Du kannst die Rolle für den Benutzer \"{name}\" nicht ändern", - "error.user.changeRole.toAdmin": "Du darfst die Admin Rolle nicht an andere Accounts vergeben", + "error.user.changeRole.toAdmin": "Du darfst die Admin-Rolle nicht an andere Accounts vergeben", "error.user.create.permission": "Du darfst diesen Account nicht anlegen", "error.user.delete": "Der Account \"{name}\" konnte nicht gelöscht werden", "error.user.delete.lastAdmin": "Du kannst den letzten Account mit Administrationsrechten nicht löschen", @@ -184,22 +197,77 @@ "error.validation.size": "Die Größe des Wertes muss \"{size}\" sein", "error.validation.startswith": "Der Wert muss mit \"{start}\" beginnen", "error.validation.time": "Bitte gib eine gültige Uhrzeit ein", + "error.validation.time.after": "Bitte gib eine Zeit nach {time} ein", + "error.validation.time.before": "Bitte gib eine Zeit vor {time} ein", + "error.validation.time.between": "Bitte gib eine Zeit zwischen {min} und {max} ein", "error.validation.url": "Bitte gib eine gültige URL ein", "field.required": "Das Feld ist Pflicht", + "field.blocks.changeType": "Blocktyp ändern", + "field.blocks.code.name": "Code", + "field.blocks.code.language": "Sprache", + "field.blocks.code.placeholder": "Code …", + "field.blocks.delete.confirm": "Willst du diesen Block wirklich löschen?", + "field.blocks.delete.confirm.all": "Willst du wirklich alle Blöcke löschen?", + "field.blocks.delete.confirm.selected": "Willst du wirklich die ausgewählten Blöcke löschen?", + "field.blocks.empty": "Keine Blöcke", + "field.blocks.fieldsets.label": "Bitte wähle einen Blocktyp aus …", + "field.blocks.gallery.name": "Galerie", + "field.blocks.gallery.images.empty": "Keine Bilder", + "field.blocks.gallery.images.label": "Bilder", + "field.blocks.heading.level": "Ebene", + "field.blocks.heading.name": "Überschrift", + "field.blocks.heading.text": "Text", + "field.blocks.heading.placeholder": "Überschrift …", + "field.blocks.image.alt": "Alternativer Text", + "field.blocks.image.caption": "Bildunterschrift", + "field.blocks.image.crop": "Beschneiden", + "field.blocks.image.link": "Link", + "field.blocks.image.location": "Ort", + "field.blocks.image.name": "Bild", + "field.blocks.image.placeholder": "Bild auswählen", + "field.blocks.image.ratio": "Seitenverhältnis", + "field.blocks.list.name": "Liste", + "field.blocks.markdown.name": "Markdown", + "field.blocks.markdown.label": "Text", + "field.blocks.markdown.placeholder": "Markdown …", + "field.blocks.quote.name": "Zitat", + "field.blocks.quote.text.label": "Text", + "field.blocks.quote.text.placeholder": "Zitat …", + "field.blocks.quote.citation.label": "Quelle", + "field.blocks.quote.citation.placeholder": "Quelle …", + "field.blocks.text.name": "Text", + "field.blocks.text.placeholder": "Text …", + "field.blocks.video.caption": "Bildunterschrift", + "field.blocks.video.name": "Video", + "field.blocks.video.placeholder": "Video-URL eingeben", + "field.blocks.video.url.label": "Video-URL", + "field.blocks.video.url.placeholder": "https://youtube.com/?v=", + "field.files.empty": "Keine Dateien ausgewählt", + + "field.layout.delete": "Layout löschen", + "field.layout.delete.confirm": "Willst du dieses Layout wirklich löschen?", + "field.layout.empty": "Keine Layouts", + "field.layout.select": "Layout auswählen", + "field.pages.empty": "Keine Seiten ausgewählt", "field.structure.delete.confirm": "Willst du diesen Eintrag wirklich l\u00f6schen?", "field.structure.empty": "Es bestehen keine Eintr\u00e4ge.", "field.users.empty": "Keine Accounts ausgewählt", + "file.blueprint": "Du kannst zusätzliche Felder und Bereiche für diese Datei in /site/blueprints/{template}.yml anlegen", "file.delete.confirm": "Willst du die Datei {filename}
wirklich löschen?", + "file.sort": "Position ändern", "files": "Dateien", "files.empty": "Keine Dateien", + "hide": "Verbergen", "hour": "Stunde", "insert": "Einf\u00fcgen", + "insert.after": "Danach einfügen", + "insert.before": "Davor einfügen", "install": "Installieren", "installation": "Installation", @@ -258,7 +326,20 @@ "lock.isUnlocked": "Deine ungespeicherten Änderungen wurden von einem anderen Account überschrieben. Du kannst sie herunterladen, um sie manuell einzufügen. ", "login": "Anmelden", + "login.code.label.login": "Anmeldecode", + "login.code.label.password-reset": "Anmeldecode", + "login.code.placeholder.email": "000 000", + "login.code.text.email": "Wenn deine E-Mail-Adresse registriert ist, wurde der angeforderte Code per E-Mail versendet.", + "login.email.login.body": "Hallo {user.nameOrEmail},\n\ndu hast gerade einen Anmeldecode für das Kirby Panel angefordert.\nDer folgende Anmeldecode ist für die nächsten {timeout} Minuten gültig:\n\n{code}\n\nWenn du keinen Anmeldecode angefordert hast, ignoriere bitte diese E-Mail oder kontaktiere bei Fragen deinen Administrator.\nBitte leite diese E-Mail aus Sicherheitsgründen NICHT weiter.", + "login.email.login.subject": "Dein Anmeldecode", + "login.email.password-reset.body": "Hallo {user.nameOrEmail},\n\ndu hast gerade einen Anmeldecode für das Kirby Panel angefordert.\nDer folgende Anmeldecode ist für die nächsten {timeout} Minuten gültig:\n\n{code}\n\nWenn du keinen Anmeldecode angefordert hast, ignoriere bitte diese E-Mail oder kontaktiere bei Fragen deinen Administrator.\nBitte leite diese E-Mail aus Sicherheitsgründen NICHT weiter.", + "login.email.password-reset.subject": "Dein Anmeldecode", "login.remember": "Angemeldet bleiben", + "login.reset": "Passwort zurücksetzen", + "login.toggleText.code.email": "Anmelden über E-Mail", + "login.toggleText.code.email-password": "Anmelden mit Passwort", + "login.toggleText.password-reset.email": "Passwort vergessen?", + "login.toggleText.password-reset.email-password": "← Zurück zur Anmeldung", "logout": "Abmelden", @@ -288,12 +369,14 @@ "on": "an", "open": "Öffnen", "options": "Optionen", + "options.none": "Keine Optionen", "orientation": "Ausrichtung", "orientation.landscape": "Querformat", "orientation.portrait": "Hochformat", "orientation.square": "Quadratisch", + "page.blueprint": "Du kannst zusätzliche Felder und Bereiche für diese Seite in /site/blueprints/{template}.yml anlegen", "page.changeSlug": "URL \u00e4ndern", "page.changeSlug.fromTitle": "Aus Titel erzeugen", "page.changeStatus": "Status ändern", @@ -307,6 +390,7 @@ "page.duplicate.appendix": "Kopie", "page.duplicate.files": "Dateien kopieren", "page.duplicate.pages": "Seiten kopieren", + "page.sort": "Position ändern", "page.status": "Status", "page.status.draft": "Entwurf", "page.status.draft.description": "Die Seite ist im Entwurfsmodus und ist nur nach Anmeldung oder über den geheimen Link sichtbar", @@ -326,6 +410,7 @@ "password": "Passwort", "pixel": "Pixel", "prev": "Vorheriger Eintrag", + "preview": "Vorschau", "remove": "Entfernen", "rename": "Umbenennen", "replace": "Ersetzen", @@ -344,11 +429,15 @@ "save": "Speichern", "search": "Suchen", + "search.min": "Gib mindestens {min}  Zeichen ein, um zu suchen", + "search.all": "Alles zeigen", + "search.results.none": "Keine Ergebnisse", "section.required": "Der Bereich ist Pflicht", "select": "Auswählen", "settings": "Einstellungen", + "show": "Anzeigen", "size": "Größe", "slug": "URL-Anhang", "sort": "Sortieren", @@ -356,6 +445,8 @@ "template": "Vorlage", "today": "Heute", + "site.blueprint": "Du kannst zusätzliche Felder und Bereiche für die Seite in /site/blueprints/site.yml anlegen", + "toolbar.button.code": "Code", "toolbar.button.bold": "Fetter Text", "toolbar.button.email": "E-Mail", @@ -414,6 +505,7 @@ "view.account": "Dein Account", "view.installation": "Installation", + "view.resetPassword": "Passwort zurücksetzen", "view.settings": "Einstellungen", "view.site": "Seite", "view.users": "Accounts", diff --git a/kirby/i18n/translations/el.json b/kirby/i18n/translations/el.json index ef4b21c..661873e 100755 --- a/kirby/i18n/translations/el.json +++ b/kirby/i18n/translations/el.json @@ -6,6 +6,8 @@ "change": "\u0391\u03bb\u03bb\u03b1\u03b3\u03ae", "close": "\u039a\u03bb\u03b5\u03af\u03c3\u03b9\u03bc\u03bf", "confirm": "Εντάξει", + "collapse": "Collapse", + "collapse.all": "Collapse All", "copy": "Αντιγραφή", "create": "Δημιουργία", @@ -22,12 +24,15 @@ "days.wed": "\u03a4\u03b5\u03c4", "delete": "\u0394\u03b9\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae", + "delete.all": "Delete all", "dimensions": "Διαστάσεις", "disabled": "Disabled", "discard": "Απόρριψη", "download": "Download", "duplicate": "Duplicate", "edit": "\u0395\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1", + "expand": "Expand", + "expand.all": "Expand All", "dialog.files.empty": "No files to select", "dialog.pages.empty": "No pages to select", @@ -36,6 +41,7 @@ "email": "Διεύθυνση ηλεκτρονικού ταχυδρομείου", "email.placeholder": "mail@example.com", + "error.access.code": "Invalid code", "error.access.login": "Mη έγκυρη σύνδεση", "error.access.panel": "Δεν επιτρέπεται η πρόσβαση στον πίνακα ελέγχου", "error.access.view": "You are not allowed to access this part of the panel", @@ -47,6 +53,12 @@ "error.blueprint.notFound": "Δεν ήταν δυνατή η φόρτωση του προσχεδίου \"{name}\"", + "error.blocks.max.plural": "You must not add more than {max} blocks", + "error.blocks.max.singular": "You must not add more than one block", + "error.blocks.min.plural": "You must add at least {min} blocks", + "error.blocks.min.singular": "You must add at least one block", + "error.blocks.validation": "There's an error in block {index}", + "error.email.preset.notFound": "Δεν είναι δυνατή η εύρεση της προεπιλογής διεύθινσης ηλεκτρονικού ταχυδρομείου \"{name}\"", "error.field.converter.invalid": "Μη έγκυρος μετατροπέας \"{converter}\"", @@ -185,22 +197,77 @@ "error.validation.size": "Το μέγεθος της τιμής πρέπει να είναι \"{size}\"", "error.validation.startswith": "Η τιμή πρέπει να αρχίζει με \"{start}\"", "error.validation.time": "Παρακαλώ εισάγετε μια έγκυρη ώρα", + "error.validation.time.after": "Please enter a time after {time}", + "error.validation.time.before": "Please enter a time before {time}", + "error.validation.time.between": "Please enter a time between {min} and {max}", "error.validation.url": "Παρακαλώ εισάγετε μια έγκυρη διεύθυνση URL", "field.required": "The field is required", + "field.blocks.changeType": "Change type", + "field.blocks.code.name": "Κώδικας", + "field.blocks.code.language": "Γλώσσα", + "field.blocks.code.placeholder": "Your code …", + "field.blocks.delete.confirm": "Do you really want to delete this block?", + "field.blocks.delete.confirm.all": "Do you really want to delete all blocks?", + "field.blocks.delete.confirm.selected": "Do you really want to delete the selected blocks?", + "field.blocks.empty": "No blocks yet", + "field.blocks.fieldsets.label": "Please select a block type …", + "field.blocks.gallery.name": "Gallery", + "field.blocks.gallery.images.empty": "No images yet", + "field.blocks.gallery.images.label": "Images", + "field.blocks.heading.level": "Level", + "field.blocks.heading.name": "Heading", + "field.blocks.heading.text": "Text", + "field.blocks.heading.placeholder": "Heading …", + "field.blocks.image.alt": "Alternative text", + "field.blocks.image.caption": "Caption", + "field.blocks.image.crop": "Crop", + "field.blocks.image.link": "Σύνδεσμος", + "field.blocks.image.location": "Location", + "field.blocks.image.name": "Εικόνα", + "field.blocks.image.placeholder": "Select an image", + "field.blocks.image.ratio": "Ratio", + "field.blocks.list.name": "List", + "field.blocks.markdown.name": "Markdown", + "field.blocks.markdown.label": "Text", + "field.blocks.markdown.placeholder": "Markdown …", + "field.blocks.quote.name": "Quote", + "field.blocks.quote.text.label": "Text", + "field.blocks.quote.text.placeholder": "Quote …", + "field.blocks.quote.citation.label": "Citation", + "field.blocks.quote.citation.placeholder": "by …", + "field.blocks.text.name": "Text", + "field.blocks.text.placeholder": "Text …", + "field.blocks.video.caption": "Caption", + "field.blocks.video.name": "Video", + "field.blocks.video.placeholder": "Enter a video URL", + "field.blocks.video.url.label": "Video-URL", + "field.blocks.video.url.placeholder": "https://youtube.com/?v=", + "field.files.empty": "Δεν έχουν επιλεγεί αρχεία ακόμα", + + "field.layout.delete": "Delete layout", + "field.layout.delete.confirm": "Do you really want to delete this layout?", + "field.layout.empty": "No rows yet", + "field.layout.select": "Select a layout", + "field.pages.empty": "Δεν έχουν επιλεγεί ακόμη σελίδες", "field.structure.delete.confirm": "\u0395\u03af\u03c3\u03c4\u03b5 \u03c3\u03af\u03b3\u03bf\u03c5\u03c1\u03bf\u03c2 \u03cc\u03c4\u03b9 \u03b8\u03ad\u03bb\u03b5\u03c4\u03b5 \u03bd\u03b1 \u03b4\u03b9\u03b1\u03b3\u03c1\u03ac\u03c8\u03b5\u03c4\u03b5 \u03b1\u03c5\u03c4\u03ae\u03bd \u03c4\u03b7\u03bd \u03ba\u03b1\u03c4\u03b1\u03c7\u03ce\u03c1\u03b9\u03c3\u03b7;", "field.structure.empty": "\u0394\u03b5\u03bd \u03c5\u03c0\u03ac\u03c1\u03c7\u03bf\u03c5\u03bd \u03b1\u03ba\u03cc\u03bc\u03b7 \u03ba\u03b1\u03c4\u03b1\u03c7\u03c9\u03c1\u03af\u03c3\u03b5\u03b9\u03c2.", "field.users.empty": "Δεν έχουν επιλεγεί ακόμη χρήστες", + "file.blueprint": "This file has no blueprint yet. You can define the setup in /site/blueprints/{template}.yml", "file.delete.confirm": "\u0398\u03ad\u03bb\u03b5\u03c4\u03b5 \u03c3\u03af\u03b3\u03bf\u03c5\u03c1\u03b1 \u03bd\u03b1 \u03b4\u03b9\u03b1\u03b3\u03c1\u03ac\u03c8\u03b5\u03c4\u03b5 \u03b1\u03c5\u03c4\u03cc \u03c4\u03bf \u03b1\u03c1\u03c7\u03b5\u03af\u03bf;", + "file.sort": "Change position", "files": "Αρχεία", "files.empty": "Δεν υπάρχουν ακόμα αρχεία", + "hide": "Hide", "hour": "Ώρα", "insert": "\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae", + "insert.after": "Insert after", + "insert.before": "Insert before", "install": "Εγκατάσταση", "installation": "Εγκατάσταση", @@ -259,7 +326,20 @@ "lock.isUnlocked": "Your unsaved changes have been overwritten by another user. You can download your changes to merge them manually.", "login": "\u03a3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7", + "login.code.label.login": "Login code", + "login.code.label.password-reset": "Password reset code", + "login.code.placeholder.email": "000 000", + "login.code.text.email": "If your email address is registered, the requested code was sent via email.", + "login.email.login.body": "Hi {user.nameOrEmail},\n\nYou recently requested a login code for the Kirby Panel.\nThe following login code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a login code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.", + "login.email.login.subject": "Your login code", + "login.email.password-reset.body": "Hi {user.nameOrEmail},\n\nYou recently requested a password reset code for the Kirby Panel.\nThe following password reset code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a password reset code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.", + "login.email.password-reset.subject": "Your password reset code", "login.remember": "Κρατήστε με συνδεδεμένο", + "login.reset": "Reset password", + "login.toggleText.code.email": "Login via email", + "login.toggleText.code.email-password": "Login with password", + "login.toggleText.password-reset.email": "Forgot your password?", + "login.toggleText.password-reset.email-password": "← Back to login", "logout": "\u0391\u03c0\u03bf\u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7", @@ -296,6 +376,7 @@ "orientation.portrait": "Κάθετος", "orientation.square": "Τετράγωνος", + "page.blueprint": "This page has no blueprint yet. You can define the setup in /site/blueprints/{template}.yml", "page.changeSlug": "\u0391\u03bb\u03bb\u03b1\u03b3\u03ae URL", "page.changeSlug.fromTitle": "\u0394\u03b7\u03bc\u03b9\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 \u03b1\u03c0\u03cc \u03c4\u03bf\u03bd \u03c4\u03af\u03c4\u03bb\u03bf", "page.changeStatus": "Αλλαγή κατάστασης", @@ -309,6 +390,7 @@ "page.duplicate.appendix": "Αντιγραφή", "page.duplicate.files": "Copy files", "page.duplicate.pages": "Copy pages", + "page.sort": "Change position", "page.status": "Kατάσταση", "page.status.draft": "Προσχέδιο", "page.status.draft.description": "The page is in draft mode and only visible for logged in editors or via secret link", @@ -328,6 +410,7 @@ "password": "\u039a\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03a0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2", "pixel": "Εικονοστοιχέιο", "prev": "Προηγούμενο", + "preview": "Preview", "remove": "Αφαίρεση", "rename": "Μετονομασία", "replace": "\u0391\u03bd\u03c4\u03b9\u03ba\u03b1\u03c4\u03ac\u03c3\u03c4\u03b1\u03c3\u03b7", @@ -354,6 +437,7 @@ "select": "Επιλογή", "settings": "Ρυθμίσεις", + "show": "Show", "size": "Μέγεθος", "slug": "\u0395\u03c0\u03af\u03b8\u03b5\u03bc\u03b1 URL", "sort": "Ταξινόμηση", @@ -361,6 +445,8 @@ "template": "\u03a0\u03c1\u03cc\u03c4\u03c5\u03c0\u03bf", "today": "Σήμερα", + "site.blueprint": "The site has no blueprint yet. You can define the setup in /site/blueprints/site.yml", + "toolbar.button.code": "Κώδικας", "toolbar.button.bold": "\u0388\u03bd\u03c4\u03bf\u03bd\u03b7 \u03b3\u03c1\u03b1\u03c6\u03ae", "toolbar.button.email": "Email", @@ -419,6 +505,7 @@ "view.account": "\u039f \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03cc\u03c2 \u03c3\u03b1\u03c2", "view.installation": "\u0395\u03b3\u03ba\u03b1\u03c4\u03ac\u03c3\u03c4\u03b1\u03c3\u03b7", + "view.resetPassword": "Reset password", "view.settings": "Ρυθμίσεις", "view.site": "Iστοσελίδα", "view.users": "\u03a7\u03c1\u03ae\u03c3\u03c4\u03b5\u03c2", diff --git a/kirby/i18n/translations/en.json b/kirby/i18n/translations/en.json index 19f6473..8eff6c8 100755 --- a/kirby/i18n/translations/en.json +++ b/kirby/i18n/translations/en.json @@ -6,6 +6,8 @@ "change": "Change", "close": "Close", "confirm": "Ok", + "collapse": "Collapse", + "collapse.all": "Collapse All", "copy": "Copy", "create": "Create", @@ -22,12 +24,15 @@ "days.wed": "Wed", "delete": "Delete", + "delete.all": "Delete all", "dimensions": "Dimensions", "disabled": "Disabled", "discard": "Discard", "download": "Download", "duplicate": "Duplicate", "edit": "Edit", + "expand": "Expand", + "expand.all": "Expand All", "dialog.files.empty": "No files to select", "dialog.pages.empty": "No pages to select", @@ -36,6 +41,7 @@ "email": "Email", "email.placeholder": "mail@example.com", + "error.access.code": "Invalid code", "error.access.login": "Invalid login", "error.access.panel": "You are not allowed to access the panel", "error.access.view": "You are not allowed to access this part of the panel", @@ -47,6 +53,12 @@ "error.blueprint.notFound": "The blueprint \"{name}\" could not be loaded", + "error.blocks.max.plural": "You must not add more than {max} blocks", + "error.blocks.max.singular": "You must not add more than one block", + "error.blocks.min.plural": "You must add at least {min} blocks", + "error.blocks.min.singular": "You must add at least one block", + "error.blocks.validation": "There's an error in block {index}", + "error.email.preset.notFound": "The email preset \"{name}\" cannot be found", "error.field.converter.invalid": "Invalid converter \"{converter}\"", @@ -55,6 +67,7 @@ "error.file.changeName.permission": "You are not allowed to change the name of \"{filename}\"", "error.file.duplicate": "A file with the name \"{filename}\" already exists", "error.file.extension.forbidden": "The extension \"{extension}\" is not allowed", + "error.file.extension.invalid": "Invalid extension: {extension}", "error.file.extension.missing": "The extensions for \"{filename}\" is missing", "error.file.maxheight": "The height of the image must not exceed {height} pixels", "error.file.maxsize": "The file is too large", @@ -70,6 +83,7 @@ "error.file.notFound": "The file \"{filename}\" cannot be found", "error.file.orientation": "The orientation of the image must be \"{orientation}\"", "error.file.type.forbidden": "You are not allowed to upload {type} files", + "error.file.type.invalid": "Invalid file type: {type}", "error.file.undefined": "The file cannot be found", "error.form.incomplete": "Please fix all form errors…", @@ -79,6 +93,9 @@ "error.language.duplicate": "The language already exists", "error.language.name": "Please enter a valid name for the language", + "error.layout.validation.block": "There's an error in block {blockIndex} in layout {layoutIndex}", + "error.layout.validation.settings": "There's an error in layout {index} settings", + "error.license.format": "Please enter a valid license key", "error.license.email": "Please enter a valid email address", "error.license.verification": "The license could not be verified", @@ -185,22 +202,77 @@ "error.validation.size": "The size of the value must be \"{size}\"", "error.validation.startswith": "The value must start with \"{start}\"", "error.validation.time": "Please enter a valid time", + "error.validation.time.after": "Please enter a time after {time}", + "error.validation.time.before": "Please enter a time before {time}", + "error.validation.time.between": "Please enter a time between {min} and {max}", "error.validation.url": "Please enter a valid URL", "field.required": "The field is required", + "field.blocks.changeType": "Change type", + "field.blocks.code.name": "Code", + "field.blocks.code.language": "Language", + "field.blocks.code.placeholder": "Your code …", + "field.blocks.delete.confirm": "Do you really want to delete this block?", + "field.blocks.delete.confirm.all": "Do you really want to delete all blocks?", + "field.blocks.delete.confirm.selected": "Do you really want to delete the selected blocks?", + "field.blocks.empty": "No blocks yet", + "field.blocks.fieldsets.label": "Please select a block type …", + "field.blocks.gallery.name": "Gallery", + "field.blocks.gallery.images.empty": "No images yet", + "field.blocks.gallery.images.label": "Images", + "field.blocks.heading.level": "Level", + "field.blocks.heading.name": "Heading", + "field.blocks.heading.text": "Text", + "field.blocks.heading.placeholder": "Heading …", + "field.blocks.image.alt": "Alternative text", + "field.blocks.image.caption": "Caption", + "field.blocks.image.crop": "Crop", + "field.blocks.image.link": "Link", + "field.blocks.image.location": "Location", + "field.blocks.image.name": "Image", + "field.blocks.image.placeholder": "Select an image", + "field.blocks.image.ratio": "Ratio", + "field.blocks.list.name": "List", + "field.blocks.markdown.name": "Markdown", + "field.blocks.markdown.label": "Text", + "field.blocks.markdown.placeholder": "Markdown …", + "field.blocks.quote.name": "Quote", + "field.blocks.quote.text.label": "Text", + "field.blocks.quote.text.placeholder": "Quote …", + "field.blocks.quote.citation.label": "Citation", + "field.blocks.quote.citation.placeholder": "by …", + "field.blocks.text.name": "Text", + "field.blocks.text.placeholder": "Text …", + "field.blocks.video.caption": "Caption", + "field.blocks.video.name": "Video", + "field.blocks.video.placeholder": "Enter a video URL", + "field.blocks.video.url.label": "Video-URL", + "field.blocks.video.url.placeholder": "https://youtube.com/?v=", + "field.files.empty": "No files selected yet", + + "field.layout.delete": "Delete layout", + "field.layout.delete.confirm": "Do you really want to delete this layout?", + "field.layout.empty": "No rows yet", + "field.layout.select": "Select a layout", + "field.pages.empty": "No pages selected yet", "field.structure.delete.confirm": "Do you really want to delete this row?", "field.structure.empty": "No entries yet", "field.users.empty": "No users selected yet", + "file.blueprint": "This file has no blueprint yet. You can define the setup in /site/blueprints/{template}.yml", "file.delete.confirm": "Do you really want to delete
{filename}?", + "file.sort": "Change position", "files": "Files", "files.empty": "No files yet", + "hide": "Hide", "hour": "Hour", "insert": "Insert", + "insert.after": "Insert after", + "insert.before": "Insert before", "install": "Install", "installation": "Installation", @@ -259,7 +331,20 @@ "lock.isUnlocked": "Your unsaved changes have been overwritten by another user. You can download your changes to merge them manually.", "login": "Login", + "login.code.label.login": "Login code", + "login.code.label.password-reset": "Password reset code", + "login.code.placeholder.email": "000 000", + "login.code.text.email": "If your email address is registered, the requested code was sent via email.", + "login.email.login.body": "Hi {user.nameOrEmail},\n\nYou recently requested a login code for the Kirby Panel.\nThe following login code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a login code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.", + "login.email.login.subject": "Your login code", + "login.email.password-reset.body": "Hi {user.nameOrEmail},\n\nYou recently requested a password reset code for the Kirby Panel.\nThe following password reset code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a password reset code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.", + "login.email.password-reset.subject": "Your password reset code", "login.remember": "Keep me logged in", + "login.reset": "Reset password", + "login.toggleText.code.email": "Login via email", + "login.toggleText.code.email-password": "Login with password", + "login.toggleText.password-reset.email": "Forgot your password?", + "login.toggleText.password-reset.email-password": "← Back to login", "logout": "Logout", @@ -296,6 +381,7 @@ "orientation.portrait": "Portrait", "orientation.square": "Square", + "page.blueprint": "This page has no blueprint yet. You can define the setup in /site/blueprints/{template}.yml", "page.changeSlug": "Change URL", "page.changeSlug.fromTitle": "Create from title", "page.changeStatus": "Change status", @@ -309,6 +395,7 @@ "page.duplicate.appendix": "Copy", "page.duplicate.files": "Copy files", "page.duplicate.pages": "Copy pages", + "page.sort": "Change position", "page.status": "Status", "page.status.draft": "Draft", "page.status.draft.description": "The page is in draft mode and only visible for logged in editors or via secret link", @@ -328,6 +415,7 @@ "password": "Password", "pixel": "Pixel", "prev": "Previous", + "preview": "Preview", "remove": "Remove", "rename": "Rename", "replace": "Replace", @@ -354,6 +442,7 @@ "select": "Select", "settings": "Settings", + "show": "Show", "size": "Size", "slug": "URL appendix", "sort": "Sort", @@ -361,6 +450,8 @@ "template": "Template", "today": "Today", + "site.blueprint": "The site has no blueprint yet. You can define the setup in /site/blueprints/site.yml", + "toolbar.button.code": "Code", "toolbar.button.bold": "Bold", "toolbar.button.email": "Email", @@ -419,6 +510,7 @@ "view.account": "Your account", "view.installation": "Installation", + "view.resetPassword": "Reset password", "view.settings": "Settings", "view.site": "Site", "view.users": "Users", diff --git a/kirby/i18n/translations/es_419.json b/kirby/i18n/translations/es_419.json index dd366f9..a81e424 100755 --- a/kirby/i18n/translations/es_419.json +++ b/kirby/i18n/translations/es_419.json @@ -6,6 +6,8 @@ "change": "Cambiar", "close": "Cerrar", "confirm": "De acuerdo", + "collapse": "Collapse", + "collapse.all": "Collapse All", "copy": "Copiar", "create": "Crear", @@ -22,12 +24,15 @@ "days.wed": "Mi\u00e9", "delete": "Eliminar", + "delete.all": "Delete all", "dimensions": "Dimensiones", "disabled": "Desabilitado", "discard": "Descartar", "download": "Descargar", "duplicate": "Duplicar", "edit": "Editar", + "expand": "Expand", + "expand.all": "Expand All", "dialog.files.empty": "No has seleccionado ningún archivo", "dialog.pages.empty": "No has seleccionado ninguna página", @@ -36,6 +41,7 @@ "email": "Correo Electrónico", "email.placeholder": "correo@ejemplo.com", + "error.access.code": "Invalid code", "error.access.login": "Ingreso inválido", "error.access.panel": "No tienes permitido acceder al panel.", "error.access.view": "No tienes permiso para acceder a esta parte del panel", @@ -47,6 +53,12 @@ "error.blueprint.notFound": "El blueprint \"{name}\" no se pudo cargar.", + "error.blocks.max.plural": "You must not add more than {max} blocks", + "error.blocks.max.singular": "You must not add more than one block", + "error.blocks.min.plural": "You must add at least {min} blocks", + "error.blocks.min.singular": "You must add at least one block", + "error.blocks.validation": "There's an error in block {index}", + "error.email.preset.notFound": "El preajuste de email \"{name}\" no se pudo encontrar.", "error.field.converter.invalid": "Convertidor inválido \"{converter}\"", @@ -185,22 +197,77 @@ "error.validation.size": "El tamaño del valor debe ser \"{size}\"", "error.validation.startswith": "El valor debe comenzar con \"{start}\"", "error.validation.time": "Por favor ingresa una hora válida", + "error.validation.time.after": "Please enter a time after {time}", + "error.validation.time.before": "Please enter a time before {time}", + "error.validation.time.between": "Please enter a time between {min} and {max}", "error.validation.url": "Por favor ingresa un URL válido", "field.required": "Este campo es requerido", + "field.blocks.changeType": "Change type", + "field.blocks.code.name": "Código", + "field.blocks.code.language": "Idioma", + "field.blocks.code.placeholder": "Your code …", + "field.blocks.delete.confirm": "Do you really want to delete this block?", + "field.blocks.delete.confirm.all": "Do you really want to delete all blocks?", + "field.blocks.delete.confirm.selected": "Do you really want to delete the selected blocks?", + "field.blocks.empty": "No blocks yet", + "field.blocks.fieldsets.label": "Please select a block type …", + "field.blocks.gallery.name": "Gallery", + "field.blocks.gallery.images.empty": "No images yet", + "field.blocks.gallery.images.label": "Images", + "field.blocks.heading.level": "Level", + "field.blocks.heading.name": "Heading", + "field.blocks.heading.text": "Text", + "field.blocks.heading.placeholder": "Heading …", + "field.blocks.image.alt": "Alternative text", + "field.blocks.image.caption": "Caption", + "field.blocks.image.crop": "Crop", + "field.blocks.image.link": "Enlace", + "field.blocks.image.location": "Location", + "field.blocks.image.name": "Imágen", + "field.blocks.image.placeholder": "Select an image", + "field.blocks.image.ratio": "Ratio", + "field.blocks.list.name": "List", + "field.blocks.markdown.name": "Markdown", + "field.blocks.markdown.label": "Text", + "field.blocks.markdown.placeholder": "Markdown …", + "field.blocks.quote.name": "Quote", + "field.blocks.quote.text.label": "Text", + "field.blocks.quote.text.placeholder": "Quote …", + "field.blocks.quote.citation.label": "Citation", + "field.blocks.quote.citation.placeholder": "by …", + "field.blocks.text.name": "Text", + "field.blocks.text.placeholder": "Text …", + "field.blocks.video.caption": "Caption", + "field.blocks.video.name": "Video", + "field.blocks.video.placeholder": "Enter a video URL", + "field.blocks.video.url.label": "Video-URL", + "field.blocks.video.url.placeholder": "https://youtube.com/?v=", + "field.files.empty": "Aún no ha seleccionado ningún archivo", + + "field.layout.delete": "Delete layout", + "field.layout.delete.confirm": "Do you really want to delete this layout?", + "field.layout.empty": "No rows yet", + "field.layout.select": "Select a layout", + "field.pages.empty": "Aún no ha seleccionado ningúna pagina", "field.structure.delete.confirm": "\u00bfEn realidad desea borrar esta entrada?", "field.structure.empty": "A\u00fan no existen entradas.", "field.users.empty": "Aún no ha seleccionado ningún usuario", + "file.blueprint": "This file has no blueprint yet. You can define the setup in /site/blueprints/{template}.yml", "file.delete.confirm": "\u00bfEst\u00e1s seguro que deseas eliminar este archivo?", + "file.sort": "Change position", "files": "Archivos", "files.empty": "Aún no existen archivos", + "hide": "Hide", "hour": "Hora", "insert": "Insertar", + "insert.after": "Insert after", + "insert.before": "Insert before", "install": "Instalar", "installation": "Instalación", @@ -259,7 +326,20 @@ "lock.isUnlocked": "Tus cambios sin guardar han sido sobrescritos por otro usuario. Puedes descargar los cambios y fusionarlos manualmente.", "login": "Iniciar sesi\u00f3n", + "login.code.label.login": "Login code", + "login.code.label.password-reset": "Password reset code", + "login.code.placeholder.email": "000 000", + "login.code.text.email": "If your email address is registered, the requested code was sent via email.", + "login.email.login.body": "Hi {user.nameOrEmail},\n\nYou recently requested a login code for the Kirby Panel.\nThe following login code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a login code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.", + "login.email.login.subject": "Your login code", + "login.email.password-reset.body": "Hi {user.nameOrEmail},\n\nYou recently requested a password reset code for the Kirby Panel.\nThe following password reset code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a password reset code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.", + "login.email.password-reset.subject": "Your password reset code", "login.remember": "Mantener mi sesión iniciada", + "login.reset": "Reset password", + "login.toggleText.code.email": "Login via email", + "login.toggleText.code.email-password": "Login with password", + "login.toggleText.password-reset.email": "Forgot your password?", + "login.toggleText.password-reset.email-password": "← Back to login", "logout": "Cerrar sesi\u00f3n", @@ -296,6 +376,7 @@ "orientation.portrait": "Retrato", "orientation.square": "Diapositiva", + "page.blueprint": "This page has no blueprint yet. You can define the setup in /site/blueprints/{template}.yml", "page.changeSlug": "Cambiar URL", "page.changeSlug.fromTitle": "Crear a partir del t\u00edtulo", "page.changeStatus": "Cambiar estado", @@ -309,6 +390,7 @@ "page.duplicate.appendix": "Copiar", "page.duplicate.files": "Copiar archivos", "page.duplicate.pages": "Copiar páginas", + "page.sort": "Change position", "page.status": "Estado", "page.status.draft": "Borrador", "page.status.draft.description": "The page is in draft mode and only visible for logged in editors or via secret link", @@ -328,6 +410,7 @@ "password": "Contrase\u00f1a", "pixel": "Pixel", "prev": "Anterior", + "preview": "Preview", "remove": "Eliminar", "rename": "Renombrar", "replace": "Reemplazar", @@ -354,6 +437,7 @@ "select": "Seleccionar", "settings": "Ajustes", + "show": "Show", "size": "Tamaño", "slug": "Apéndice URL", "sort": "Ordenar", @@ -361,6 +445,8 @@ "template": "Plantilla", "today": "Hoy", + "site.blueprint": "The site has no blueprint yet. You can define the setup in /site/blueprints/site.yml", + "toolbar.button.code": "Código", "toolbar.button.bold": "Negrita", "toolbar.button.email": "Email", @@ -419,6 +505,7 @@ "view.account": "Tu cuenta", "view.installation": "Instalaci\u00f3n", + "view.resetPassword": "Reset password", "view.settings": "Ajustes", "view.site": "Sitio", "view.users": "Usuarios", diff --git a/kirby/i18n/translations/es_ES.json b/kirby/i18n/translations/es_ES.json index da81f1e..af8cf7f 100755 --- a/kirby/i18n/translations/es_ES.json +++ b/kirby/i18n/translations/es_ES.json @@ -6,6 +6,8 @@ "change": "Cambiar", "close": "Cerrar", "confirm": "Confirmar", + "collapse": "Collapse", + "collapse.all": "Collapse All", "copy": "Copiar", "create": "Crear", @@ -22,12 +24,15 @@ "days.wed": "Mi", "delete": "Borrar", + "delete.all": "Delete all", "dimensions": "Dimensiones", "disabled": "Desabilitado", "discard": "Descartar", "download": "Descargar", "duplicate": "Duplicar", "edit": "Editar", + "expand": "Expand", + "expand.all": "Expand All", "dialog.files.empty": "No se ha seleccionado ningún archivo", "dialog.pages.empty": "No se ha seleccionado ninguna página", @@ -36,6 +41,7 @@ "email": "Correo electrónico", "email.placeholder": "correo@ejemplo.com", + "error.access.code": "Invalid code", "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", @@ -47,6 +53,12 @@ "error.blueprint.notFound": "El blueprint \"{name}\" no pudo ser cargado", + "error.blocks.max.plural": "You must not add more than {max} blocks", + "error.blocks.max.singular": "You must not add more than one block", + "error.blocks.min.plural": "You must add at least {min} blocks", + "error.blocks.min.singular": "You must add at least one block", + "error.blocks.validation": "There's an error in block {index}", + "error.email.preset.notFound": "El preset del correo \"{name}\" no pudo ser encontrado", "error.field.converter.invalid": "Convertidor \"{converter}\" inválido", @@ -185,22 +197,77 @@ "error.validation.size": "El tamaño del valor debe ser \"{size}\"", "error.validation.startswith": "El valor debe comenzar con \"{start}\"", "error.validation.time": "Por favor ingrese una hora válida", + "error.validation.time.after": "Please enter a time after {time}", + "error.validation.time.before": "Please enter a time before {time}", + "error.validation.time.between": "Please enter a time between {min} and {max}", "error.validation.url": "Por favor introduzca un URL válido", "field.required": "The field is required", + "field.blocks.changeType": "Change type", + "field.blocks.code.name": "Código", + "field.blocks.code.language": "Idioma", + "field.blocks.code.placeholder": "Your code …", + "field.blocks.delete.confirm": "Do you really want to delete this block?", + "field.blocks.delete.confirm.all": "Do you really want to delete all blocks?", + "field.blocks.delete.confirm.selected": "Do you really want to delete the selected blocks?", + "field.blocks.empty": "No blocks yet", + "field.blocks.fieldsets.label": "Please select a block type …", + "field.blocks.gallery.name": "Gallery", + "field.blocks.gallery.images.empty": "No images yet", + "field.blocks.gallery.images.label": "Images", + "field.blocks.heading.level": "Level", + "field.blocks.heading.name": "Heading", + "field.blocks.heading.text": "Text", + "field.blocks.heading.placeholder": "Heading …", + "field.blocks.image.alt": "Alternative text", + "field.blocks.image.caption": "Caption", + "field.blocks.image.crop": "Crop", + "field.blocks.image.link": "Enlace", + "field.blocks.image.location": "Location", + "field.blocks.image.name": "Imágen", + "field.blocks.image.placeholder": "Select an image", + "field.blocks.image.ratio": "Ratio", + "field.blocks.list.name": "List", + "field.blocks.markdown.name": "Markdown", + "field.blocks.markdown.label": "Text", + "field.blocks.markdown.placeholder": "Markdown …", + "field.blocks.quote.name": "Quote", + "field.blocks.quote.text.label": "Text", + "field.blocks.quote.text.placeholder": "Quote …", + "field.blocks.quote.citation.label": "Citation", + "field.blocks.quote.citation.placeholder": "by …", + "field.blocks.text.name": "Text", + "field.blocks.text.placeholder": "Text …", + "field.blocks.video.caption": "Caption", + "field.blocks.video.name": "Video", + "field.blocks.video.placeholder": "Enter a video URL", + "field.blocks.video.url.label": "Video-URL", + "field.blocks.video.url.placeholder": "https://youtube.com/?v=", + "field.files.empty": "Aún no hay archivos seleccionados", + + "field.layout.delete": "Delete layout", + "field.layout.delete.confirm": "Do you really want to delete this layout?", + "field.layout.empty": "No rows yet", + "field.layout.select": "Select a layout", + "field.pages.empty": "Aún no hay páginas seleccionadas", "field.structure.delete.confirm": "¿Realmente quieres eliminar esta fila?", "field.structure.empty": "Aún no hay entradas", "field.users.empty": "Aún no hay usuarios seleccionados", + "file.blueprint": "This file has no blueprint yet. You can define the setup in /site/blueprints/{template}.yml", "file.delete.confirm": "¿Realmente quieres eliminar
{filename}?", + "file.sort": "Change position", "files": "Archivos", "files.empty": "Aún no hay archivos", + "hide": "Hide", "hour": "Hora", "insert": "Insertar", + "insert.after": "Insert after", + "insert.before": "Insert before", "install": "Instalar", "installation": "Instalación", @@ -259,7 +326,20 @@ "lock.isUnlocked": "Your unsaved changes have been overwritten by another user. You can download your changes to merge them manually.", "login": "Iniciar sesión", + "login.code.label.login": "Login code", + "login.code.label.password-reset": "Password reset code", + "login.code.placeholder.email": "000 000", + "login.code.text.email": "If your email address is registered, the requested code was sent via email.", + "login.email.login.body": "Hi {user.nameOrEmail},\n\nYou recently requested a login code for the Kirby Panel.\nThe following login code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a login code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.", + "login.email.login.subject": "Your login code", + "login.email.password-reset.body": "Hi {user.nameOrEmail},\n\nYou recently requested a password reset code for the Kirby Panel.\nThe following password reset code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a password reset code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.", + "login.email.password-reset.subject": "Your password reset code", "login.remember": "Mantener sesión iniciada", + "login.reset": "Reset password", + "login.toggleText.code.email": "Login via email", + "login.toggleText.code.email-password": "Login with password", + "login.toggleText.password-reset.email": "Forgot your password?", + "login.toggleText.password-reset.email-password": "← Back to login", "logout": "Cerrar sesión", @@ -296,6 +376,7 @@ "orientation.portrait": "Retrato", "orientation.square": "Cuadrado", + "page.blueprint": "This page has no blueprint yet. You can define the setup in /site/blueprints/{template}.yml", "page.changeSlug": "Cambiar URL", "page.changeSlug.fromTitle": "Crear en base al título", "page.changeStatus": "Cambiar estado", @@ -309,6 +390,7 @@ "page.duplicate.appendix": "Copiar", "page.duplicate.files": "Copy files", "page.duplicate.pages": "Copy pages", + "page.sort": "Change position", "page.status": "Estado", "page.status.draft": "Borrador", "page.status.draft.description": "The page is in draft mode and only visible for logged in editors or via secret link", @@ -328,6 +410,7 @@ "password": "Contraseña", "pixel": "Pixel", "prev": "Anterior", + "preview": "Preview", "remove": "Eliminar", "rename": "Renombrar", "replace": "Remplazar", @@ -354,6 +437,7 @@ "select": "Seleccionar", "settings": "Ajustes", + "show": "Show", "size": "Tamaño", "slug": "Apéndice URL", "sort": "Ordenar", @@ -361,6 +445,8 @@ "template": "Plantilla", "today": "Hoy", + "site.blueprint": "The site has no blueprint yet. You can define the setup in /site/blueprints/site.yml", + "toolbar.button.code": "Código", "toolbar.button.bold": "Negritas", "toolbar.button.email": "Correo electrónico", @@ -419,6 +505,7 @@ "view.account": "Su cuenta", "view.installation": "Instalación", + "view.resetPassword": "Reset password", "view.settings": "Ajustes", "view.site": "Sitio", "view.users": "Usuarios", diff --git a/kirby/i18n/translations/fa.json b/kirby/i18n/translations/fa.json index 3519ec0..33740dc 100755 --- a/kirby/i18n/translations/fa.json +++ b/kirby/i18n/translations/fa.json @@ -6,6 +6,8 @@ "change": "\u0627\u0635\u0644\u0627\u062d", "close": "\u0628\u0633\u062a\u0646", "confirm": "تایید", + "collapse": "Collapse", + "collapse.all": "Collapse All", "copy": "کپی", "create": "ایجاد", @@ -22,12 +24,15 @@ "days.wed": "\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647", "delete": "\u062d\u0630\u0641", + "delete.all": "Delete all", "dimensions": "ابعاد", "disabled": "Disabled", "discard": "\u0627\u0646\u0635\u0631\u0627\u0641", "download": "Download", "duplicate": "Duplicate", "edit": "\u0648\u06cc\u0631\u0627\u06cc\u0634", + "expand": "Expand", + "expand.all": "Expand All", "dialog.files.empty": "No files to select", "dialog.pages.empty": "No pages to select", @@ -36,6 +41,7 @@ "email": "\u067e\u0633\u062a \u0627\u0644\u06a9\u062a\u0631\u0648\u0646\u06cc\u06a9", "email.placeholder": "mail@example.com", + "error.access.code": "Invalid code", "error.access.login": "اطلاعات ورودی نامعتبر است", "error.access.panel": "شما اجازه دسترسی به پانل را ندارید", "error.access.view": "You are not allowed to access this part of the panel", @@ -47,6 +53,12 @@ "error.blueprint.notFound": "بلوپرینت با نام «{name}» قابل بارگذاری نیست", + "error.blocks.max.plural": "You must not add more than {max} blocks", + "error.blocks.max.singular": "You must not add more than one block", + "error.blocks.min.plural": "You must add at least {min} blocks", + "error.blocks.min.singular": "You must add at least one block", + "error.blocks.validation": "There's an error in block {index}", + "error.email.preset.notFound": "قالب ایمیل «{name}» پیدا نشد", "error.field.converter.invalid": "مبدل «{converter}» نامعتبر است", @@ -185,22 +197,77 @@ "error.validation.size": "اندازه ورودی باید معادل «{size}» باشد", "error.validation.startswith": "مقدار باید با «{start}» شروع شود", "error.validation.time": "لطفا زمان معتبری وارد کنید", + "error.validation.time.after": "Please enter a time after {time}", + "error.validation.time.before": "Please enter a time before {time}", + "error.validation.time.between": "Please enter a time between {min} and {max}", "error.validation.url": "لطفا آدرس URL صحیح وارد کنید", "field.required": "The field is required", + "field.blocks.changeType": "Change type", + "field.blocks.code.name": "کد", + "field.blocks.code.language": "زبان", + "field.blocks.code.placeholder": "Your code …", + "field.blocks.delete.confirm": "Do you really want to delete this block?", + "field.blocks.delete.confirm.all": "Do you really want to delete all blocks?", + "field.blocks.delete.confirm.selected": "Do you really want to delete the selected blocks?", + "field.blocks.empty": "No blocks yet", + "field.blocks.fieldsets.label": "Please select a block type …", + "field.blocks.gallery.name": "Gallery", + "field.blocks.gallery.images.empty": "No images yet", + "field.blocks.gallery.images.label": "Images", + "field.blocks.heading.level": "Level", + "field.blocks.heading.name": "Heading", + "field.blocks.heading.text": "Text", + "field.blocks.heading.placeholder": "Heading …", + "field.blocks.image.alt": "Alternative text", + "field.blocks.image.caption": "Caption", + "field.blocks.image.crop": "Crop", + "field.blocks.image.link": "پیوند", + "field.blocks.image.location": "Location", + "field.blocks.image.name": "تصویر", + "field.blocks.image.placeholder": "Select an image", + "field.blocks.image.ratio": "Ratio", + "field.blocks.list.name": "List", + "field.blocks.markdown.name": "Markdown", + "field.blocks.markdown.label": "Text", + "field.blocks.markdown.placeholder": "Markdown …", + "field.blocks.quote.name": "Quote", + "field.blocks.quote.text.label": "Text", + "field.blocks.quote.text.placeholder": "Quote …", + "field.blocks.quote.citation.label": "Citation", + "field.blocks.quote.citation.placeholder": "by …", + "field.blocks.text.name": "Text", + "field.blocks.text.placeholder": "Text …", + "field.blocks.video.caption": "Caption", + "field.blocks.video.name": "Video", + "field.blocks.video.placeholder": "Enter a video URL", + "field.blocks.video.url.label": "Video-URL", + "field.blocks.video.url.placeholder": "https://youtube.com/?v=", + "field.files.empty": "فایلی انتخاب نشده است", + + "field.layout.delete": "Delete layout", + "field.layout.delete.confirm": "Do you really want to delete this layout?", + "field.layout.empty": "No rows yet", + "field.layout.select": "Select a layout", + "field.pages.empty": "صفحه‌ای انتخاب نشده است", "field.structure.delete.confirm": "\u0645\u062f\u062e\u0644 \u062c\u0627\u0631\u06cc \u062d\u0630\u0641 \u0634\u0648\u062f\u061f", "field.structure.empty": "\u0645\u0648\u0631\u062f\u06cc \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0631\u062f.", "field.users.empty": "کاربری انتخاب نشده است", + "file.blueprint": "This file has no blueprint yet. You can define the setup in /site/blueprints/{template}.yml", "file.delete.confirm": "آیا واقعا می خواهید این فایل را حذف کنید؟
{filename}", + "file.sort": "Change position", "files": "فایل‌ها", "files.empty": "فایلی موجود نیست", + "hide": "Hide", "hour": "ساعت", "insert": "\u062f\u0631\u062c", + "insert.after": "Insert after", + "insert.before": "Insert before", "install": "نصب", "installation": "نصب و راه اندازی", @@ -259,7 +326,20 @@ "lock.isUnlocked": "Your unsaved changes have been overwritten by another user. You can download your changes to merge them manually.", "login": "ورود", + "login.code.label.login": "Login code", + "login.code.label.password-reset": "Password reset code", + "login.code.placeholder.email": "000 000", + "login.code.text.email": "If your email address is registered, the requested code was sent via email.", + "login.email.login.body": "Hi {user.nameOrEmail},\n\nYou recently requested a login code for the Kirby Panel.\nThe following login code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a login code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.", + "login.email.login.subject": "Your login code", + "login.email.password-reset.body": "Hi {user.nameOrEmail},\n\nYou recently requested a password reset code for the Kirby Panel.\nThe following password reset code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a password reset code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.", + "login.email.password-reset.subject": "Your password reset code", "login.remember": "مرا به خاطر بسپار", + "login.reset": "Reset password", + "login.toggleText.code.email": "Login via email", + "login.toggleText.code.email-password": "Login with password", + "login.toggleText.password-reset.email": "Forgot your password?", + "login.toggleText.password-reset.email-password": "← Back to login", "logout": "خروج", @@ -296,6 +376,7 @@ "orientation.portrait": "عمودی", "orientation.square": "مربع", + "page.blueprint": "This page has no blueprint yet. You can define the setup in /site/blueprints/{template}.yml", "page.changeSlug": "تغییر Url صفحه", "page.changeSlug.fromTitle": "\u0627\u06cc\u062c\u0627\u062f \u0627\u0632 \u0631\u0648\u06cc \u0639\u0646\u0648\u0627\u0646", "page.changeStatus": "تغییر وضعیت", @@ -309,6 +390,7 @@ "page.duplicate.appendix": "کپی", "page.duplicate.files": "Copy files", "page.duplicate.pages": "Copy pages", + "page.sort": "Change position", "page.status": "وضعیت", "page.status.draft": "پیش‌نویس", "page.status.draft.description": "The page is in draft mode and only visible for logged in editors or via secret link", @@ -328,6 +410,7 @@ "password": "\u06af\u0630\u0631\u0648\u0627\u0698\u0647", "pixel": "پیکسل", "prev": "قبلی", + "preview": "Preview", "remove": "حذف", "rename": "تغییر نام", "replace": "\u062c\u0627\u06cc\u06af\u0632\u06cc\u0646\u06cc", @@ -354,6 +437,7 @@ "select": "انتخاب", "settings": "تنظیمات", + "show": "Show", "size": "اندازه", "slug": "پسوند Url", "sort": "ترتیب", @@ -361,6 +445,8 @@ "template": "\u0642\u0627\u0644\u0628 \u0635\u0641\u062d\u0647", "today": "امروز", + "site.blueprint": "The site has no blueprint yet. You can define the setup in /site/blueprints/site.yml", + "toolbar.button.code": "کد", "toolbar.button.bold": "\u0645\u062a\u0646 \u0628\u0627 \u062d\u0631\u0648\u0641 \u062f\u0631\u0634\u062a", "toolbar.button.email": "\u067e\u0633\u062a \u0627\u0644\u06a9\u062a\u0631\u0648\u0646\u06cc\u06a9", @@ -419,6 +505,7 @@ "view.account": "حساب کاربری شما", "view.installation": "\u0646\u0635\u0628 \u0648 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc", + "view.resetPassword": "Reset password", "view.settings": "تنظیمات", "view.site": "سایت", "view.users": "\u06a9\u0627\u0631\u0628\u0631\u0627\u0646", diff --git a/kirby/i18n/translations/fi.json b/kirby/i18n/translations/fi.json index 272f3d5..df0da52 100755 --- a/kirby/i18n/translations/fi.json +++ b/kirby/i18n/translations/fi.json @@ -6,6 +6,8 @@ "change": "Muuta", "close": "Sulje", "confirm": "Ok", + "collapse": "Collapse", + "collapse.all": "Collapse All", "copy": "Kopioi", "create": "Luo", @@ -22,12 +24,15 @@ "days.wed": "Ke", "delete": "Poista", + "delete.all": "Delete all", "dimensions": "Mitat", "disabled": "Disabled", "discard": "Hylkää", "download": "Lataa", "duplicate": "Kahdenna", "edit": "Muokkaa", + "expand": "Expand", + "expand.all": "Expand All", "dialog.files.empty": "Ei valittavissa olevia tiedostoja", "dialog.pages.empty": "Ei valittavissa olevia sivuja", @@ -36,6 +41,7 @@ "email": "S\u00e4hk\u00f6posti", "email.placeholder": "nimi@osoite.fi", + "error.access.code": "Invalid code", "error.access.login": "Kirjautumistiedot eivät kelpaa", "error.access.panel": "Sinulla ei ole oikeutta käyttää paneelia", "error.access.view": "Sinulla ei ole oikeutta käyttää tätä osaa paneelista", @@ -47,6 +53,12 @@ "error.blueprint.notFound": "Kaavaa \"{name}\" ei voitu ladata", + "error.blocks.max.plural": "You must not add more than {max} blocks", + "error.blocks.max.singular": "You must not add more than one block", + "error.blocks.min.plural": "You must add at least {min} blocks", + "error.blocks.min.singular": "You must add at least one block", + "error.blocks.validation": "There's an error in block {index}", + "error.email.preset.notFound": "Nimellä \"{name}\" ja kyseisellä verkkotunnuksella ei löydy sähköpostiosoitetta", "error.field.converter.invalid": "Muunnin \"{converter}\" ei kelpaa", @@ -185,22 +197,77 @@ "error.validation.size": "Arvon koko täytyy olla \"{size}\"", "error.validation.startswith": "Arvon alkuosa täytyy olla \"{start}\"", "error.validation.time": "Anna kelpaava aika", + "error.validation.time.after": "Please enter a time after {time}", + "error.validation.time.before": "Please enter a time before {time}", + "error.validation.time.between": "Please enter a time between {min} and {max}", "error.validation.url": "Anna kelpaava URL", "field.required": "Kenttä on pakollinen", + "field.blocks.changeType": "Change type", + "field.blocks.code.name": "Koodi", + "field.blocks.code.language": "Kieli", + "field.blocks.code.placeholder": "Your code …", + "field.blocks.delete.confirm": "Do you really want to delete this block?", + "field.blocks.delete.confirm.all": "Do you really want to delete all blocks?", + "field.blocks.delete.confirm.selected": "Do you really want to delete the selected blocks?", + "field.blocks.empty": "No blocks yet", + "field.blocks.fieldsets.label": "Please select a block type …", + "field.blocks.gallery.name": "Gallery", + "field.blocks.gallery.images.empty": "No images yet", + "field.blocks.gallery.images.label": "Images", + "field.blocks.heading.level": "Level", + "field.blocks.heading.name": "Heading", + "field.blocks.heading.text": "Text", + "field.blocks.heading.placeholder": "Heading …", + "field.blocks.image.alt": "Alternative text", + "field.blocks.image.caption": "Caption", + "field.blocks.image.crop": "Crop", + "field.blocks.image.link": "Linkki", + "field.blocks.image.location": "Location", + "field.blocks.image.name": "Kuva", + "field.blocks.image.placeholder": "Select an image", + "field.blocks.image.ratio": "Ratio", + "field.blocks.list.name": "List", + "field.blocks.markdown.name": "Markdown", + "field.blocks.markdown.label": "Text", + "field.blocks.markdown.placeholder": "Markdown …", + "field.blocks.quote.name": "Quote", + "field.blocks.quote.text.label": "Text", + "field.blocks.quote.text.placeholder": "Quote …", + "field.blocks.quote.citation.label": "Citation", + "field.blocks.quote.citation.placeholder": "by …", + "field.blocks.text.name": "Text", + "field.blocks.text.placeholder": "Text …", + "field.blocks.video.caption": "Caption", + "field.blocks.video.name": "Video", + "field.blocks.video.placeholder": "Enter a video URL", + "field.blocks.video.url.label": "Video-URL", + "field.blocks.video.url.placeholder": "https://youtube.com/?v=", + "field.files.empty": "Tiedostoja ei ole vielä valittu", + + "field.layout.delete": "Delete layout", + "field.layout.delete.confirm": "Do you really want to delete this layout?", + "field.layout.empty": "No rows yet", + "field.layout.select": "Select a layout", + "field.pages.empty": " Sivuja ei ole vielä valittu", "field.structure.delete.confirm": "Haluatko varmasti poistaa tämän rivin?", "field.structure.empty": "Rivejä ei ole vielä lisätty", "field.users.empty": "Käyttäjiä ei ole vielä valittu", + "file.blueprint": "This file has no blueprint yet. You can define the setup in /site/blueprints/{template}.yml", "file.delete.confirm": "Haluatko varmasti poistaa tiedoston
{filename}?", + "file.sort": "Change position", "files": "Tiedostot", "files.empty": "Tiedostoja ei ole vielä lisätty", + "hide": "Hide", "hour": "Tunti", "insert": "Lis\u00e4\u00e4", + "insert.after": "Insert after", + "insert.before": "Insert before", "install": "Asenna", "installation": "Asennus", @@ -259,7 +326,20 @@ "lock.isUnlocked": "Your unsaved changes have been overwritten by another user. You can download your changes to merge them manually.", "login": "Kirjaudu", + "login.code.label.login": "Login code", + "login.code.label.password-reset": "Password reset code", + "login.code.placeholder.email": "000 000", + "login.code.text.email": "If your email address is registered, the requested code was sent via email.", + "login.email.login.body": "Hi {user.nameOrEmail},\n\nYou recently requested a login code for the Kirby Panel.\nThe following login code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a login code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.", + "login.email.login.subject": "Your login code", + "login.email.password-reset.body": "Hi {user.nameOrEmail},\n\nYou recently requested a password reset code for the Kirby Panel.\nThe following password reset code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a password reset code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.", + "login.email.password-reset.subject": "Your password reset code", "login.remember": "Pidä minut kirjautuneena", + "login.reset": "Reset password", + "login.toggleText.code.email": "Login via email", + "login.toggleText.code.email-password": "Login with password", + "login.toggleText.password-reset.email": "Forgot your password?", + "login.toggleText.password-reset.email-password": "← Back to login", "logout": "Kirjaudu ulos", @@ -296,6 +376,7 @@ "orientation.portrait": "Pystysuuntainen", "orientation.square": "Neliskulmainen", + "page.blueprint": "This page has no blueprint yet. You can define the setup in /site/blueprints/{template}.yml", "page.changeSlug": "Vaihda URL-osoite", "page.changeSlug.fromTitle": "Luo nimen perusteella", "page.changeStatus": "Muuta tilaa", @@ -309,6 +390,7 @@ "page.duplicate.appendix": "Kopioi", "page.duplicate.files": "Copy files", "page.duplicate.pages": "Copy pages", + "page.sort": "Change position", "page.status": "Tila", "page.status.draft": "Luonnos", "page.status.draft.description": "The page is in draft mode and only visible for logged in editors or via secret link", @@ -328,6 +410,7 @@ "password": "Salasana", "pixel": "Pikseli", "prev": "Edellinen", + "preview": "Preview", "remove": "Poista", "rename": "Nimeä uudelleen", "replace": "Korvaa", @@ -354,6 +437,7 @@ "select": "Valitse", "settings": "Asetukset", + "show": "Show", "size": "Koko", "slug": "URL-tunniste", "sort": "Järjestele", @@ -361,6 +445,8 @@ "template": "Sivupohja", "today": "Tänään", + "site.blueprint": "The site has no blueprint yet. You can define the setup in /site/blueprints/site.yml", + "toolbar.button.code": "Koodi", "toolbar.button.bold": "Lihavointi", "toolbar.button.email": "S\u00e4hk\u00f6posti", @@ -419,6 +505,7 @@ "view.account": "Oma käyttäjätili", "view.installation": "Asennus", + "view.resetPassword": "Reset password", "view.settings": "Asetukset", "view.site": "Sivusto", "view.users": "K\u00e4ytt\u00e4j\u00e4t", diff --git a/kirby/i18n/translations/fr.json b/kirby/i18n/translations/fr.json index d2e7647..25d22af 100755 --- a/kirby/i18n/translations/fr.json +++ b/kirby/i18n/translations/fr.json @@ -6,6 +6,8 @@ "change": "Changer", "close": "Fermer", "confirm": "Ok", + "collapse": "Replier", + "collapse.all": "Tout replier", "copy": "Copier", "create": "Créer", @@ -22,12 +24,15 @@ "days.wed": "Mer", "delete": "Supprimer", + "delete.all": "Tout supprimer", "dimensions": "Dimensions", "disabled": "Désactivé", "discard": "Supprimer", "download": "Télécharger", "duplicate": "Dupliquer", "edit": "Éditer", + "expand": "Déplier", + "expand.all": "Tout déplier", "dialog.files.empty": "Aucun fichier à sélectionner", "dialog.pages.empty": "Aucune page à sélectionner", @@ -36,6 +41,7 @@ "email": "Courriel", "email.placeholder": "mail@example.com", + "error.access.code": "Code incorrect", "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", @@ -47,6 +53,12 @@ "error.blueprint.notFound": "Le blueprint « {name} » n’a pu être chargé", + "error.blocks.max.plural": "Vous ne devez pas ajouter plus de {max} blocs", + "error.blocks.max.singular": "Vous ne devez pas ajouter plus d'un bloc", + "error.blocks.min.plural": "Vous devez ajouter au moins {min} blocs", + "error.blocks.min.singular": "Vous devez ajouter au moins un bloc", + "error.blocks.validation": "Il y a une erreur dans le bloc {index}", + "error.email.preset.notFound": "La configuration de courriel « {name} » n’a pu être trouvé", "error.field.converter.invalid": "Convertisseur « {converter} » incorrect", @@ -185,22 +197,77 @@ "error.validation.size": "La grandeur de la valeur doit être « {size} »", "error.validation.startswith": "La valeur doit commencer par « {start} »", "error.validation.time": "Veuillez saisir une heure valide", + "error.validation.time.after": "Veuillez entrer une heure après {time}", + "error.validation.time.before": "Veuillez entrer une heure avant {time}", + "error.validation.time.between": "Veuillez entrer une heure entre {min} et {max}", "error.validation.url": "Veuillez saisir une URL valide", "field.required": "Le champ est obligatoire", + "field.blocks.changeType": "Changer le type", + "field.blocks.code.name": "Code", + "field.blocks.code.language": "Langue", + "field.blocks.code.placeholder": "Votre code…", + "field.blocks.delete.confirm": "Voulez-vous vraiment supprimer ce bloc ?", + "field.blocks.delete.confirm.all": "Voulez-vous vraiment supprimer tous les blocs ?", + "field.blocks.delete.confirm.selected": "Voulez-vous vraiment supprimer les blocs sélectionnés ?", + "field.blocks.empty": "Pas encore de blocs", + "field.blocks.fieldsets.label": "Veuillez sélectionner un type de bloc…", + "field.blocks.gallery.name": "Galerie", + "field.blocks.gallery.images.empty": "Pas encore d’images", + "field.blocks.gallery.images.label": "Images", + "field.blocks.heading.level": "Niveau", + "field.blocks.heading.name": "Titre", + "field.blocks.heading.text": "Texte", + "field.blocks.heading.placeholder": "Titre…", + "field.blocks.image.alt": "Texte alternatif", + "field.blocks.image.caption": "Légende", + "field.blocks.image.crop": "Recadrer", + "field.blocks.image.link": "Lien", + "field.blocks.image.location": "Emplacement", + "field.blocks.image.name": "Image", + "field.blocks.image.placeholder": "Sélectionnez une image", + "field.blocks.image.ratio": "Proportions", + "field.blocks.list.name": "Liste", + "field.blocks.markdown.name": "Markdown", + "field.blocks.markdown.label": "Texte", + "field.blocks.markdown.placeholder": "Markdown…", + "field.blocks.quote.name": "Citation", + "field.blocks.quote.text.label": "Texte", + "field.blocks.quote.text.placeholder": "Citation…", + "field.blocks.quote.citation.label": "Citation", + "field.blocks.quote.citation.placeholder": "par…", + "field.blocks.text.name": "Texte", + "field.blocks.text.placeholder": "Texte…", + "field.blocks.video.caption": "Légende", + "field.blocks.video.name": "Vidéo", + "field.blocks.video.placeholder": "Entrez l’URL d’une vidéo", + "field.blocks.video.url.label": "URL de la vidéo", + "field.blocks.video.url.placeholder": "https://youtube.com/?v=", + "field.files.empty": "Pas encore de fichier sélectionné", + + "field.layout.delete": "Supprimer cette disposition", + "field.layout.delete.confirm": "Voulez-vous vraiment supprimer cette disposition ?", + "field.layout.empty": "Pas encore de rangées", + "field.layout.select": "Choisir une disposition", + "field.pages.empty": "Pas encore de page sélectionnée", "field.structure.delete.confirm": "Voulez-vous vraiment supprimer cette ligne?", "field.structure.empty": "Pas encore d’entrée", "field.users.empty": "Pas encore d’utilisateur sélectionné", + "file.blueprint": "Ce fichier n’a pas encore de blueprint. Vous pouvez en définir les paramètres dans /site/blueprints/{template}.yml", "file.delete.confirm": "Voulez-vous vraiment supprimer
{filename} ?", + "file.sort": "Modifier la position", "files": "Fichiers", "files.empty": "Pas encore de fichier", + "hide": "Masquer", "hour": "Heure", "insert": "Insérer", + "insert.after": "Insérer après", + "insert.before": "Insérer avant", "install": "Installer", "installation": "Installation", @@ -259,7 +326,20 @@ "lock.isUnlocked": "Vos modifications non enregistrées ont été écrasées pas un autre utilisateur. Vous pouvez télécharger vos modifications pour les fusionner manuellement.", "login": "Se connecter", + "login.code.label.login": "Code de connexion", + "login.code.label.password-reset": "Code de réinitialisation du mot de passe", + "login.code.placeholder.email": "000 000", + "login.code.text.email": "Si votre adresse de courriel est enregistrée, le code demandé vous sera envoyé par courriel.", + "login.email.login.body": "Bonjour {user.nameOrEmail},\n\nVous avez demandé récemment un code de connexion pour le Panel de Kirby.\nLe code suivant sera valide pendant {timeout} minutes:\n\n{code}\n\nSi vous n’avez pas demandé de code de connexion, veuillez ignorer cet email ou contacter l’administrateur si vous avez des questions.\nPar sécurité, ne faites PAS suivre cet email.", + "login.email.login.subject": "Votre code de connexion", + "login.email.password-reset.body": "Bonjour {user.nameOrEmail},\n\nVous avez demandé récemment un code de connexion pour le Panel de Kirby.\nLe code suivant sera valide pendant {timeout} minutes:\n\n{code}\n\nSi vous n’avez pas demandé de code de connexion, veuillez ignorer ce courriel ou contacter l’administrateur si vous avez des questions.\nPar sécurité, ne faites PAS suivre ce courriel.", + "login.email.password-reset.subject": "Votre code de réinitialisation du mot de passe", "login.remember": "Rester connecté", + "login.reset": "Réinitialiser le mot de passe", + "login.toggleText.code.email": "Se connecter par courriel", + "login.toggleText.code.email-password": "Se connecter avec un mot de passe", + "login.toggleText.password-reset.email": "Mot de passe oublié ?", + "login.toggleText.password-reset.email-password": "← Retour à la connexion", "logout": "Se déconnecter", @@ -296,6 +376,7 @@ "orientation.portrait": "Portrait", "orientation.square": "Carré", + "page.blueprint": "Cette page n’a pas encore de blueprint. Vous pouvez en définir les paramètres dans /site/blueprints/{template}.yml", "page.changeSlug": "Modifier l’URL", "page.changeSlug.fromTitle": "Créer à partir du titre", "page.changeStatus": "Changer le statut", @@ -309,6 +390,7 @@ "page.duplicate.appendix": "Copier", "page.duplicate.files": "Copier les fichiers", "page.duplicate.pages": "Copier les pages", + "page.sort": "Modifier la position", "page.status": "Statut", "page.status.draft": "Brouillon", "page.status.draft.description": "Cette page est un brouillon et n’est visible que pour les éditeurs connectés ou par un lien secret", @@ -328,6 +410,7 @@ "password": "Mot de passe", "pixel": "Pixel", "prev": "Précédent", + "preview": "Prévisualiser", "remove": "Supprimer", "rename": "Renommer", "replace": "Remplacer", @@ -354,6 +437,7 @@ "select": "Sélectionner", "settings": "Paramètres", + "show": "Afficher", "size": "Poids", "slug": "Identifiant de l’URL", "sort": "Trier", @@ -361,6 +445,8 @@ "template": "Modèle", "today": "Aujourd’hui", + "site.blueprint": "Ce site n’a pas encore de blueprint. Vous pouvez en définir les paramètres dans /site/blueprints/site.yml", + "toolbar.button.code": "Code", "toolbar.button.bold": "Gras", "toolbar.button.email": "Courriel", @@ -419,6 +505,7 @@ "view.account": "Votre compte", "view.installation": "Installation", + "view.resetPassword": "Réinitialiser le mot de passe", "view.settings": "Paramètres", "view.site": "Site", "view.users": "Utilisateurs", diff --git a/kirby/i18n/translations/hu.json b/kirby/i18n/translations/hu.json index e2d5549..af04fb9 100755 --- a/kirby/i18n/translations/hu.json +++ b/kirby/i18n/translations/hu.json @@ -6,6 +6,8 @@ "change": "M\u00f3dos\u00edt\u00e1s", "close": "Bez\u00e1r", "confirm": "Mentés", + "collapse": "Collapse", + "collapse.all": "Collapse All", "copy": "Másol", "create": "Létrehoz", @@ -22,12 +24,15 @@ "days.wed": "sze", "delete": "T\u00f6rl\u00e9s", + "delete.all": "Delete all", "dimensions": "Méretek", "disabled": "Disabled", "discard": "Visszavon\u00e1s", "download": "Letöltés", "duplicate": "Másolat", "edit": "Aloldal szerkeszt\u00e9se", + "expand": "Expand", + "expand.all": "Expand All", "dialog.files.empty": "Nincsenek fájlok kiválasztva", "dialog.pages.empty": "Nincsenek oldalak kiválasztva", @@ -36,6 +41,7 @@ "email": "Email", "email.placeholder": "mail@pelda.hu", + "error.access.code": "Invalid code", "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", @@ -47,6 +53,12 @@ "error.blueprint.notFound": "A \"{name}\" oldalsablon nem tölthető be", + "error.blocks.max.plural": "You must not add more than {max} blocks", + "error.blocks.max.singular": "You must not add more than one block", + "error.blocks.min.plural": "You must add at least {min} blocks", + "error.blocks.min.singular": "You must add at least one block", + "error.blocks.validation": "There's an error in block {index}", + "error.email.preset.notFound": "A \"{name}\" email-beállítás nem található", "error.field.converter.invalid": "Érvénytelen konverter: \"{converter}\"", @@ -185,22 +197,77 @@ "error.validation.size": "Az értéknek az alábbi méretűnek kell lennie: \"{size}\"", "error.validation.startswith": "Az értéknek ezzel kell kezdődnie: \"{start}\"", "error.validation.time": "Kérlek megfelelő időt adj meg", + "error.validation.time.after": "Please enter a time after {time}", + "error.validation.time.before": "Please enter a time before {time}", + "error.validation.time.between": "Please enter a time between {min} and {max}", "error.validation.url": "Kérlek megfelelő URL-t adj meg", "field.required": "The field is required", + "field.blocks.changeType": "Change type", + "field.blocks.code.name": "Kód", + "field.blocks.code.language": "Nyelv", + "field.blocks.code.placeholder": "Your code …", + "field.blocks.delete.confirm": "Do you really want to delete this block?", + "field.blocks.delete.confirm.all": "Do you really want to delete all blocks?", + "field.blocks.delete.confirm.selected": "Do you really want to delete the selected blocks?", + "field.blocks.empty": "No blocks yet", + "field.blocks.fieldsets.label": "Please select a block type …", + "field.blocks.gallery.name": "Gallery", + "field.blocks.gallery.images.empty": "No images yet", + "field.blocks.gallery.images.label": "Images", + "field.blocks.heading.level": "Level", + "field.blocks.heading.name": "Heading", + "field.blocks.heading.text": "Text", + "field.blocks.heading.placeholder": "Heading …", + "field.blocks.image.alt": "Alternative text", + "field.blocks.image.caption": "Caption", + "field.blocks.image.crop": "Crop", + "field.blocks.image.link": "Link", + "field.blocks.image.location": "Location", + "field.blocks.image.name": "Kép", + "field.blocks.image.placeholder": "Select an image", + "field.blocks.image.ratio": "Ratio", + "field.blocks.list.name": "List", + "field.blocks.markdown.name": "Markdown", + "field.blocks.markdown.label": "Text", + "field.blocks.markdown.placeholder": "Markdown …", + "field.blocks.quote.name": "Quote", + "field.blocks.quote.text.label": "Text", + "field.blocks.quote.text.placeholder": "Quote …", + "field.blocks.quote.citation.label": "Citation", + "field.blocks.quote.citation.placeholder": "by …", + "field.blocks.text.name": "Text", + "field.blocks.text.placeholder": "Text …", + "field.blocks.video.caption": "Caption", + "field.blocks.video.name": "Video", + "field.blocks.video.placeholder": "Enter a video URL", + "field.blocks.video.url.label": "Video-URL", + "field.blocks.video.url.placeholder": "https://youtube.com/?v=", + "field.files.empty": "Nincs fálj kiválasztva", + + "field.layout.delete": "Delete layout", + "field.layout.delete.confirm": "Do you really want to delete this layout?", + "field.layout.empty": "No rows yet", + "field.layout.select": "Select a layout", + "field.pages.empty": "Nincs oldal kiválasztva", "field.structure.delete.confirm": "Biztos t\u00f6r\u00f6lni szeretn\u00e9d ezt a bejegyz\u00e9st?", "field.structure.empty": "Nincs m\u00e9g bejegyz\u00e9s", "field.users.empty": "Nincs felhasználó kiválasztva", + "file.blueprint": "This file has no blueprint yet. You can define the setup in /site/blueprints/{template}.yml", "file.delete.confirm": "Biztos törölni akarod ezt a fájlt:
{filename}?", + "file.sort": "Change position", "files": "Fájlok", "files.empty": "Még nincsenek fájlok", + "hide": "Hide", "hour": "Óra", "insert": "Beilleszt", + "insert.after": "Insert after", + "insert.before": "Insert before", "install": "Telepítés", "installation": "Telepítés", @@ -259,7 +326,20 @@ "lock.isUnlocked": "A nem mentett módosításokat egy másik felhasználó felülírta. A módosításokat manuálisan egyesítheted.", "login": "Bejelentkezés", + "login.code.label.login": "Login code", + "login.code.label.password-reset": "Password reset code", + "login.code.placeholder.email": "000 000", + "login.code.text.email": "If your email address is registered, the requested code was sent via email.", + "login.email.login.body": "Hi {user.nameOrEmail},\n\nYou recently requested a login code for the Kirby Panel.\nThe following login code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a login code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.", + "login.email.login.subject": "Your login code", + "login.email.password-reset.body": "Hi {user.nameOrEmail},\n\nYou recently requested a password reset code for the Kirby Panel.\nThe following password reset code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a password reset code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.", + "login.email.password-reset.subject": "Your password reset code", "login.remember": "Maradjak bejelentkezve", + "login.reset": "Reset password", + "login.toggleText.code.email": "Login via email", + "login.toggleText.code.email-password": "Login with password", + "login.toggleText.password-reset.email": "Forgot your password?", + "login.toggleText.password-reset.email-password": "← Back to login", "logout": "Kijelentkezés", @@ -296,6 +376,7 @@ "orientation.portrait": "Álló", "orientation.square": "Négyzetes", + "page.blueprint": "This page has no blueprint yet. You can define the setup in /site/blueprints/{template}.yml", "page.changeSlug": "URL v\u00e1ltoztat\u00e1sa", "page.changeSlug.fromTitle": "L\u00e9trehoz\u00e1s c\u00edmb\u0151l", "page.changeStatus": "Állapot módosítása", @@ -309,6 +390,7 @@ "page.duplicate.appendix": "Másol", "page.duplicate.files": "Fájlok másolása", "page.duplicate.pages": "Oldalak másolása", + "page.sort": "Change position", "page.status": "Állapot", "page.status.draft": "Piszkozat", "page.status.draft.description": "The page is in draft mode and only visible for logged in editors or via secret link", @@ -328,6 +410,7 @@ "password": "Jelsz\u00f3", "pixel": "Pixel", "prev": "Előző", + "preview": "Preview", "remove": "Eltávolítás", "rename": "Átnevezés", "replace": "Cser\u00e9l", @@ -354,6 +437,7 @@ "select": "Kiválasztás", "settings": "Beállítások", + "show": "Show", "size": "Méret", "slug": "URL n\u00e9v", "sort": "Rendezés", @@ -361,6 +445,8 @@ "template": "Sablon", "today": "Ma", + "site.blueprint": "The site has no blueprint yet. You can define the setup in /site/blueprints/site.yml", + "toolbar.button.code": "Kód", "toolbar.button.bold": "F\u00e9lk\u00f6v\u00e9r sz\u00f6veg", "toolbar.button.email": "Email", @@ -419,6 +505,7 @@ "view.account": "Fi\u00f3kod", "view.installation": "Telep\u00edt\u00e9s", + "view.resetPassword": "Reset password", "view.settings": "Beállítások", "view.site": "Weboldal", "view.users": "Felhaszn\u00e1l\u00f3k", diff --git a/kirby/i18n/translations/id.json b/kirby/i18n/translations/id.json index dc3cb8f..08dee30 100755 --- a/kirby/i18n/translations/id.json +++ b/kirby/i18n/translations/id.json @@ -6,6 +6,8 @@ "change": "Ubah", "close": "Tutup", "confirm": "Oke", + "collapse": "Lipat", + "collapse.all": "Lipat Semua", "copy": "Salin", "create": "Buat", @@ -22,12 +24,15 @@ "days.wed": "Rab", "delete": "Hapus", + "delete.all": "Hapus semua", "dimensions": "Dimensi", "disabled": "Dimatikan", "discard": "Buang", "download": "Unduh", "duplicate": "Duplikasi", "edit": "Sunting", + "expand": "Luaskan", + "expand.all": "Luaskan Semua", "dialog.files.empty": "Tidak ada berkas untuk dipilih", "dialog.pages.empty": "Tidak ada halaman untuk dipilih", @@ -36,6 +41,7 @@ "email": "Surel", "email.placeholder": "surel@contoh.com", + "error.access.code": "Kode tidak valid", "error.access.login": "Upaya masuk tidak valid", "error.access.panel": "Anda tidak diizinkan mengakses panel", "error.access.view": "Anda tidak diizinkan mengakses bagian panel ini", @@ -47,6 +53,12 @@ "error.blueprint.notFound": "Cetak biru \"{name}\" tidak dapat dimuat", + "error.blocks.max.plural": "Anda tidak boleh menambahkan lebih dari {max} blok", + "error.blocks.max.singular": "Anda tidak boleh menambahkan lebih dari satu blok", + "error.blocks.min.plural": "Anda setidaknya menambahkan {min} blok", + "error.blocks.min.singular": "Anda setidaknya menambahkan satu blok", + "error.blocks.validation": "Ada kesalahan di blok {index}", + "error.email.preset.notFound": "Surel \"{name}\" tidak dapat ditemukan", "error.field.converter.invalid": "Konverter \"{converter}\" tidak valid", @@ -102,6 +114,7 @@ "error.page.notFound": "Halaman \"{slug}\" tidak dapat ditemukan", "error.page.num.invalid": "Masukkan nomor urut yang valid. Nomor tidak boleh negatif.", "error.page.slug.invalid": "Masukkan awalan URL yang valid", + "error.page.slug.maxlength": "Panjang slug harus kurang dari \"{length}\" karakter", "error.page.sort.permission": "Halaman \"{slug}\" tidak dapat diurutkan", "error.page.status.invalid": "Atur status halaman yang valid", "error.page.undefined": "Halaman tidak dapat ditemukan", @@ -184,22 +197,77 @@ "error.validation.size": "Ukuran dari nilai harus \"{size}\"", "error.validation.startswith": "Nilai harus diawali dengan \"{start}\"", "error.validation.time": "Masukkan waktu yang valid", + "error.validation.time.after": "Masukkan waktu setelah {time}", + "error.validation.time.before": "Masukkan waktu sebelum {time}", + "error.validation.time.between": "Masukkan waktu antara {min} dan {max}", "error.validation.url": "Masukkan URL yang valid", "field.required": "Bidang ini wajib", + "field.blocks.changeType": "Ubah tipe", + "field.blocks.code.name": "Kode", + "field.blocks.code.language": "Bahasa", + "field.blocks.code.placeholder": "Kode Anda …", + "field.blocks.delete.confirm": "Anda yakin menghapus blok ini?", + "field.blocks.delete.confirm.all": "Anda yakin menghapus semua blok?", + "field.blocks.delete.confirm.selected": "Anda yakin menghapus blok yang dipilih?", + "field.blocks.empty": "Belum ada blok", + "field.blocks.fieldsets.label": "Pilih tipe blok …", + "field.blocks.gallery.name": "Galeri", + "field.blocks.gallery.images.empty": "Belum ada gambar", + "field.blocks.gallery.images.label": "Gambar", + "field.blocks.heading.level": "Level", + "field.blocks.heading.name": "Penajukan", + "field.blocks.heading.text": "Teks", + "field.blocks.heading.placeholder": "Penajukan …", + "field.blocks.image.alt": "Teks alternatif", + "field.blocks.image.caption": "Keterangan", + "field.blocks.image.crop": "Pangkas", + "field.blocks.image.link": "Tautan", + "field.blocks.image.location": "Lokasi", + "field.blocks.image.name": "Gambar", + "field.blocks.image.placeholder": "Pilih gambar", + "field.blocks.image.ratio": "Rasio", + "field.blocks.list.name": "Daftar", + "field.blocks.markdown.name": "Markdown", + "field.blocks.markdown.label": "Teks", + "field.blocks.markdown.placeholder": "Markdown …", + "field.blocks.quote.name": "Kutipan", + "field.blocks.quote.text.label": "Teks", + "field.blocks.quote.text.placeholder": "Kutipan …", + "field.blocks.quote.citation.label": "Sitasi", + "field.blocks.quote.citation.placeholder": "oleh …", + "field.blocks.text.name": "Teks", + "field.blocks.text.placeholder": "Teks …", + "field.blocks.video.caption": "Deskripsi", + "field.blocks.video.name": "Video", + "field.blocks.video.placeholder": "Masukkan URL video", + "field.blocks.video.url.label": "URL Video", + "field.blocks.video.url.placeholder": "https://youtube.com/?v=", + "field.files.empty": "Belum ada berkas yang dipilih", + + "field.layout.delete": "Hapus tata letak", + "field.layout.delete.confirm": "Anda yakin menghapus tata letak ini?", + "field.layout.empty": "Belum ada baris", + "field.layout.select": "Pilih tata letak", + "field.pages.empty": "Belum ada halaman yang dipilih", "field.structure.delete.confirm": "Anda yakin menghapus baris ini?", "field.structure.empty": "Belum ada entri", "field.users.empty": "Belum ada pengguna yang dipilih", + "file.blueprint": "Berkas ini belum memiliki cetak biru. Anda dapat mendefinisikannya di /site/blueprints/{template}.yml", "file.delete.confirm": "Anda yakin menghapus
{filename}?", + "file.sort": "Ubah posisi", "files": "Berkas", "files.empty": "Belum ada berkas", + "hide": "Sembunyikan", "hour": "Jam", "insert": "Sisipkan", + "insert.after": "Sisipkan setelah", + "insert.before": "Sisipkan sebelum", "install": "Pasang", "installation": "Pemasangan", @@ -258,7 +326,20 @@ "lock.isUnlocked": "Perubahan Anda yang belum tersimpan telah terubah oleh pengguna lain. Anda dapat mengunduh perubahan Anda untuk menggabungkannya manual.", "login": "Masuk", + "login.code.label.login": "Kode masuk", + "login.code.label.password-reset": "Kode atur ulang sandi", + "login.code.placeholder.email": "000 000", + "login.code.text.email": "Jika alamat surel terdaftar, kode yang diminta dikirim via surel", + "login.email.login.body": "Hai {user.nameOrEmail},\n\nAnda baru saja meminta kode masuk untuk Kirby Panel.\nKode masuk berikut valid selama {timeout} menit:\n\n{code}\n\nJika Anda tidak meminta kode masuk, abaikan surel ini atau hubungi admin apabila ada yang ingin ditanyakan.\nUntuk alasan keamanan, JANGAN teruskan surel ini.", + "login.email.login.subject": "Kode masuk Anda", + "login.email.password-reset.body": "Hai {user.nameOrEmail},\n\nAnda baru saja meminta kode atur ulang sandi untuk Kirby Panel.\nKode atur ulang sandi berikut valid selama {timeout} menit:\n\n{code}\n\nJika Anda tidak meminta kode atur ulang sandi, abaikan surel ini atau hubungi admin apabila ada yang ingin ditanyakan.\nUntuk alasan keamanan, JANGAN teruskan surel ini.", + "login.email.password-reset.subject": "Kode atur ulang sandi Anda", "login.remember": "Biarkan tetap masuk", + "login.reset": "Atur ulang sandi", + "login.toggleText.code.email": "Masuk via surel", + "login.toggleText.code.email-password": "Masuk dengan sandi", + "login.toggleText.password-reset.email": "Lupa sandi Anda?", + "login.toggleText.password-reset.email-password": "← Kembali ke masuk", "logout": "Keluar", @@ -288,12 +369,14 @@ "on": "hidup", "open": "Buka", "options": "Opsi", + "options.none": "Tidak ada opsi", "orientation": "Orientasi", "orientation.landscape": "Rebah", "orientation.portrait": "Tegak", "orientation.square": "Persegi", + "page.blueprint": "Halaman ini belum memiliki cetak biru. Anda dapat mendefinisikannya di /site/blueprints/{template}.yml", "page.changeSlug": "Ubah URL", "page.changeSlug.fromTitle": "Buat dari judul", "page.changeStatus": "Ubah status", @@ -307,6 +390,7 @@ "page.duplicate.appendix": "Salin", "page.duplicate.files": "Salin berkas", "page.duplicate.pages": "Salin halaman", + "page.sort": "Ubah posisi", "page.status": "Status", "page.status.draft": "Draf", "page.status.draft.description": "Halaman ini ada pada mode draf dan hanya dapat dilihat oleh penyunting atau via tautan rahasia", @@ -326,6 +410,7 @@ "password": "Sandi", "pixel": "Piksel", "prev": "Sebelumnya", + "preview": "Pratinjau", "remove": "Hapus", "rename": "Ubah nama", "replace": "Ganti", @@ -344,11 +429,15 @@ "save": "Simpan", "search": "Cari", + "search.min": "Masukkan {min} karakter untuk mencari", + "search.all": "Tampilkan semua", + "search.results.none": "Tidak ada hasil", "section.required": "Bagian ini wajib", "select": "Pilih", "settings": "Pengaturan", + "show": "Tampilkan", "size": "Ukuran", "slug": "Akhiran URL", "sort": "Urutkan", @@ -356,6 +445,8 @@ "template": "Templat", "today": "Hari ini", + "site.blueprint": "Situs ini belum memiliki cetak biru. Anda dapat mendefinisikannya di /site/blueprints/site.yml", + "toolbar.button.code": "Kode", "toolbar.button.bold": "Tebal", "toolbar.button.email": "Surel", @@ -414,6 +505,7 @@ "view.account": "Akun Anda", "view.installation": "Pemasangan", + "view.resetPassword": "Atur ulang sandi", "view.settings": "Pengaturan", "view.site": "Situs", "view.users": "Pengguna", diff --git a/kirby/i18n/translations/it.json b/kirby/i18n/translations/it.json index a5feec0..b0aaf33 100755 --- a/kirby/i18n/translations/it.json +++ b/kirby/i18n/translations/it.json @@ -6,6 +6,8 @@ "change": "Cambia", "close": "Chiudi", "confirm": "OK", + "collapse": "Comprimi", + "collapse.all": "Comprimi tutto", "copy": "Copia", "create": "Crea", @@ -22,12 +24,15 @@ "days.wed": "Me", "delete": "Elimina", + "delete.all": "Elimina tutti", "dimensions": "Dimensioni", - "disabled": "Disabled", + "disabled": "Disabilitato", "discard": "Abbandona", "download": "Scarica", "duplicate": "Duplica", "edit": "Modifica", + "expand": "Espandi", + "expand.all": "Espandi tutto", "dialog.files.empty": "Nessun file selezionabile", "dialog.pages.empty": "Nessuna pagina selezionabile", @@ -36,9 +41,10 @@ "email": "Email", "email.placeholder": "mail@esempio.com", + "error.access.code": "Codice non valido", "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.access.view": "Non ti è permesso accedere a questa parte del pannello", "error.avatar.create.fail": "Non è stato possibile caricare l'immagine del profilo", "error.avatar.delete.fail": "Non è stato possibile eliminare l'immagine del profilo", @@ -47,28 +53,34 @@ "error.blueprint.notFound": "Non è stato possibile caricare il blueprint \"{name}\"", + "error.blocks.max.plural": "Non puoi aggiungere più di {max} blocchi", + "error.blocks.max.singular": "Non puoi aggiungere più di un blocco", + "error.blocks.min.plural": "Devi aggiungere almeno {min} blocchi", + "error.blocks.min.singular": "Devi aggiungere almeno un blocco", + "error.blocks.validation": "C'è un errore nel blocco {index}", + "error.email.preset.notFound": "Non è stato possibile trovare il preset email \"{name}\"", "error.field.converter.invalid": "Convertitore \"{converter}\" non valido", - "error.file.changeName.empty": "The name must not be empty", + "error.file.changeName.empty": "Il nome non dev'essere vuoto", "error.file.changeName.permission": "Non ti è permesso modificare il nome di \"{filename}\"", "error.file.duplicate": "Un file con il nome \"{filename}\" esiste già", "error.file.extension.forbidden": "L'estensione \"{extension}\" non è consentita", "error.file.extension.missing": "Il file \"{filename}\" non ha estensione", - "error.file.maxheight": "The height of the image must not exceed {height} pixels", - "error.file.maxsize": "The file is too large", - "error.file.maxwidth": "The width of the image must not exceed {width} pixels", + "error.file.maxheight": "L'immagine non dev'essere più alta di {height} pixel", + "error.file.maxsize": "Il file è troppo pesante", + "error.file.maxwidth": "L'immagine non dev'essere più larga di {width} pixel", "error.file.mime.differs": "Il file caricato dev'essere dello stesso MIME type \"{mime}\"", "error.file.mime.forbidden": "Il MIME type \"{mime}\" non è consentito", - "error.file.mime.invalid": "Invalid mime type: {mime}", + "error.file.mime.invalid": "Tipo mime non valido: {mime}", "error.file.mime.missing": "Il MIME type per \"{filename}\" non può essere rilevato", - "error.file.minheight": "The height of the image must be at least {height} pixels", - "error.file.minsize": "The file is too small", - "error.file.minwidth": "The width of the image must be at least {width} pixels", + "error.file.minheight": "L'immagine dev'essere alta almeno {height} pixel", + "error.file.minsize": "Il file è troppo leggero", + "error.file.minwidth": "L'immagine dev'essere larga almeno {height} pixel", "error.file.name.missing": "Il nome del file non può essere vuoto", "error.file.notFound": "Il file non \u00e8 stato trovato", - "error.file.orientation": "The orientation of the image must be \"{orientation}\"", + "error.file.orientation": "L'imaggine dev'essere orientata in \"{orientation}\"", "error.file.type.forbidden": "Non ti è permesso caricare file {type}", "error.file.undefined": "Il file non \u00e8 stato trovato", @@ -102,7 +114,7 @@ "error.page.notFound": "La pagina \"{slug}\" non è stata trovata", "error.page.num.invalid": "Inserisci un numero di ordinamento valido. I numeri non devono essere negativi", "error.page.slug.invalid": "Inserisci un prefisso URL valido", - "error.page.slug.maxlength": "Slug length must be less than \"{length}\" characters", + "error.page.slug.maxlength": "Lo \"slug\" dev'essere più corto di \"{length}\" caratteri", "error.page.sort.permission": "La pagina \"{slug}\" non può essere ordinata", "error.page.status.invalid": "Imposta uno stato valido per la pagina", "error.page.undefined": "La pagina non \u00e8 stata trovata", @@ -133,7 +145,7 @@ "error.user.changePassword.permission": "Non ti è permesso modificare la password dell'utente \"{name}\"", "error.user.changeRole.lastAdmin": "Il ruolo dell'ultimo amministratore non può esser cambiato", "error.user.changeRole.permission": "Non ti è permesso modificare il ruolo dell'utente \"{name}\"", - "error.user.changeRole.toAdmin": "You are not allowed to promote someone to the admin role", + "error.user.changeRole.toAdmin": "Non ti è permesso assegnare il ruolo di amministratore ad altri utenti", "error.user.create.permission": "Non ti è permesso creare questo utente", "error.user.delete": "L'utente non pu\u00f2 essere eliminato", "error.user.delete.lastAdmin": "L'ultimo amministratore non può essere eliminato", @@ -185,22 +197,77 @@ "error.validation.size": "La dimensione del valore dev'essere \"{size}\"", "error.validation.startswith": "Il valore deve iniziare con \"{start}\"", "error.validation.time": "Inserisci un orario valido", + "error.validation.time.after": "Inserisci un orario dopo le {time}", + "error.validation.time.before": "Inserisci un orario prima delle {time}", + "error.validation.time.between": "Inserisci un orario tra le {min} e le {max}", "error.validation.url": "Inserisci un URL valido", - "field.required": "The field is required", + "field.required": "Il campo è obbligatorio", + "field.blocks.changeType": "Cambia tipo", + "field.blocks.code.name": "Codice", + "field.blocks.code.language": "Lingua", + "field.blocks.code.placeholder": "Il tuo codice …", + "field.blocks.delete.confirm": "Vuoi veramente eliminare questo blocco?", + "field.blocks.delete.confirm.all": "Vuoi veramente eliminare tutti i blocchi? ", + "field.blocks.delete.confirm.selected": "Vuoi veramente eliminare i blocchi selezionati?", + "field.blocks.empty": "Nessun blocco inserito", + "field.blocks.fieldsets.label": "Seleziona il tipo di blocco …", + "field.blocks.gallery.name": "Galleria", + "field.blocks.gallery.images.empty": "Nessuna immagine inserita", + "field.blocks.gallery.images.label": "Immagini", + "field.blocks.heading.level": "Livello", + "field.blocks.heading.name": "Titolo", + "field.blocks.heading.text": "Testo", + "field.blocks.heading.placeholder": "Titolo …", + "field.blocks.image.alt": "Testo alternativo", + "field.blocks.image.caption": "Didascalia", + "field.blocks.image.crop": "Ritaglio", + "field.blocks.image.link": "Link", + "field.blocks.image.location": "Posizione", + "field.blocks.image.name": "Immagine", + "field.blocks.image.placeholder": "Seleziona un'immagine", + "field.blocks.image.ratio": "Rapporto", + "field.blocks.list.name": "Lista", + "field.blocks.markdown.name": "Markdown", + "field.blocks.markdown.label": "Testo", + "field.blocks.markdown.placeholder": "Markdown …", + "field.blocks.quote.name": "Citazione", + "field.blocks.quote.text.label": "Testo", + "field.blocks.quote.text.placeholder": "Citazione …", + "field.blocks.quote.citation.label": "Fonte", + "field.blocks.quote.citation.placeholder": "di …", + "field.blocks.text.name": "Testo", + "field.blocks.text.placeholder": "Testo …", + "field.blocks.video.caption": "Didascalia", + "field.blocks.video.name": "Video", + "field.blocks.video.placeholder": "Inserisci un URL di un video", + "field.blocks.video.url.label": "URL Video", + "field.blocks.video.url.placeholder": "https://youtube.com/?v=", + "field.files.empty": "Nessun file selezionato", + + "field.layout.delete": "Elimina layout", + "field.layout.delete.confirm": "Vuoi veramente eliminare questo layout?", + "field.layout.empty": "Nessuna riga inserita", + "field.layout.select": "Scegli un layout", + "field.pages.empty": "Nessuna pagina selezionata", "field.structure.delete.confirm": "Vuoi veramente eliminare questo elemento?", "field.structure.empty": "Non ci sono ancora elementi.", "field.users.empty": "Nessun utente selezionato", + "file.blueprint": "Questo file non ha ancora un \"blueprint\". Puoi impostarne uno in /site/blueprints/{template}.yml", "file.delete.confirm": "Sei sicuro di voler eliminare questo file?", + "file.sort": "Cambia posizione", "files": "Files", "files.empty": "Nessun file caricato", + "hide": "Nascondi", "hour": "Ora", "insert": "Inserisci", + "insert.after": "Inserisci dopo", + "insert.before": "Inserisci prima", "install": "Installa", "installation": "Installazione", @@ -251,7 +318,7 @@ "loading": "Caricamento", "lock.unsaved": "Modifiche non salvate", - "lock.unsaved.empty": "There are no more unsaved changes", + "lock.unsaved.empty": "Non ci sono altre modifiche non salvate", "lock.isLocked": "Modifiche non salvate di {email}", "lock.file.isLocked": "Il file viene attualmente modificato da {email} e non può essere cambiato.", "lock.page.isLocked": "la pagina viene attualmente modificata da {email} e non può essere cambiata.", @@ -259,7 +326,20 @@ "lock.isUnlocked": "Un altro utente ha sovrascritto le tue modifiche non salvate. Puoi scaricarle per recuperarle e quindi incorporarle manualmente. ", "login": "Accedi", + "login.code.label.login": "Codice di accesso", + "login.code.label.password-reset": "Codice per reimpostare la password", + "login.code.placeholder.email": "000 000", + "login.code.text.email": "Qualora il tuo indirizzo email fosse registrato, il codice richiesto è stato inviato tramite email.", + "login.email.login.body": "Ciao {user.nameOrEmail},\n\nHai recentemente richiesto un codice di accesso per il pannello Kirby.\nIl seguente codice sarà valido per {timeout} minuti:\n\n{code}\n\nSe non hai richiesto un codice di accesso, per favore ignora questa email o contatta il tuo amministratore se hai domande. \nPer motivi di sicurezza, per favore NON inoltrare questa email.", + "login.email.login.subject": "Il tuo codice di accesso", + "login.email.password-reset.body": "Ciao {user.nameOrEmail},\n\nHai recentemente richiesto un codice per reimpostare la tua password per il pannello Kirby.\nIl seguente codice sarà valido per {timeout} minuti:\n\n{code}\n\nSe non hai richiesto questo codice, per favore ignora questa email o contatta il tuo amministratore se hai domande. \nPer motivi di sicurezza, per favore NON inoltrare questa email.", + "login.email.password-reset.subject": "Il tuo codice di reimpostazione della password", "login.remember": "Resta collegato", + "login.reset": "Reimposta la password", + "login.toggleText.code.email": "Accedi tramite email", + "login.toggleText.code.email-password": "Accedi con la password", + "login.toggleText.password-reset.email": "Hai dimenticato la password?", + "login.toggleText.password-reset.email-password": "← Torna al login", "logout": "Esci", @@ -289,13 +369,14 @@ "on": "on", "open": "Apri", "options": "Opzioni", - "options.none": "No options", + "options.none": "Nessuna opzione", "orientation": "Orientamento", - "orientation.landscape": "Panorama", - "orientation.portrait": "Ritratto", + "orientation.landscape": "Orizzontale", + "orientation.portrait": "Verticale", "orientation.square": "Quadrato", + "page.blueprint": "Questa pagina non ha ancora un \"blueprint\". Puoi impostarne uno in /site/blueprints/{template}.yml", "page.changeSlug": "Modifica URL", "page.changeSlug.fromTitle": "Crea in base al titolo", "page.changeStatus": "Cambia stato", @@ -309,9 +390,10 @@ "page.duplicate.appendix": "Copia", "page.duplicate.files": "Copia file", "page.duplicate.pages": "Copia pagine", + "page.sort": "Cambia posizione", "page.status": "Stato", "page.status.draft": "Bozza", - "page.status.draft.description": "The page is in draft mode and only visible for logged in editors or via secret link", + "page.status.draft.description": "Questa pagina è una bozza ed è visibile soltanto agli utenti registrati o tramite link segreto", "page.status.listed": "Pubblico", "page.status.listed.description": "La pagina è pubblicata per tutti", "page.status.unlisted": "Non in elenco", @@ -328,12 +410,13 @@ "password": "Password", "pixel": "Pixel", "prev": "Precedente", + "preview": "Anteprima", "remove": "Rimuovi", "rename": "Rinomina", "replace": "Sostituisci", "retry": "Riprova", "revert": "Abbandona", - "revert.confirm": "Do you really want to delete all unsaved changes?", + "revert.confirm": "Sei sicuro di voler cancellare tutte le modifiche non salvate?", "role": "Ruolo", "role.admin.description": "L'amministratore ha tutti i permessi", @@ -346,14 +429,15 @@ "save": "Salva", "search": "Cerca", - "search.min": "Enter {min} characters to search", - "search.all": "Show all", - "search.results.none": "No results", + "search.min": "Inserisci almeno {min} caratteri per la ricerca", + "search.all": "Mostra tutti", + "search.results.none": "Nessun risultato", - "section.required": "The section is required", + "section.required": "La sezione è obbligatoria", "select": "Seleziona", "settings": "Impostazioni", + "show": "Mostra", "size": "Dimensioni", "slug": "URL", "sort": "Ordina", @@ -361,6 +445,8 @@ "template": "Template", "today": "Oggi", + "site.blueprint": "Il sito non ha ancora un \"blueprint\". Puoi impostarne uno in /site/blueprints/site.yml", + "toolbar.button.code": "Codice", "toolbar.button.bold": "Grassetto", "toolbar.button.email": "Email", @@ -382,17 +468,17 @@ "translation.locale": "it_IT", "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.error.cantMove": "Non è stato possibile spostare il file caricato", + "upload.error.cantWrite": "Impossibile scrivere il file su disco", + "upload.error.default": "Impossibile caricare il file", + "upload.error.extension": "Caricamento del file interrotto per via dell'estensione", + "upload.error.formSize": "La dimensione del file caricato supera la direttiva MAX_FILE_SIZE specificata nel form", + "upload.error.iniPostSize": "La dimensione del file caricato supera la direttiva post_max_size specificata in php.ini", + "upload.error.iniSize": "La dimensione del file caricato supera la direttiva upload_max_filesize specificata in php.ini", + "upload.error.noFile": "Il file non è stato caricato", + "upload.error.noFiles": "Nessun file è stato caricato", + "upload.error.partial": "Il file è stato caricato solo parzialmente", + "upload.error.tmpDir": "Manca la cartella temporanea", "upload.errors": "Errore", "upload.progress": "Caricamento...", @@ -411,7 +497,7 @@ "user.changeRole.select": "Seleziona un nuovo ruolo", "user.create": "Aggiungi nuovo utente", "user.delete": "Elimina questo utente", - "user.delete.confirm": "Sei sicuro di voler eliminare questo utente?", + "user.delete.confirm": "Sei sicuro di voler eliminare l'utente
{email}?", "users": "Utenti", @@ -419,6 +505,7 @@ "view.account": "Il tuo account", "view.installation": "Installazione", + "view.resetPassword": "Reimposta la password", "view.settings": "Impostazioni", "view.site": "Sito", "view.users": "Utenti", diff --git a/kirby/i18n/translations/ko.json b/kirby/i18n/translations/ko.json index 889995a..864a2b0 100755 --- a/kirby/i18n/translations/ko.json +++ b/kirby/i18n/translations/ko.json @@ -6,11 +6,13 @@ "change": "\ubcc0\uacbd", "close": "\ub2eb\uae30", "confirm": "확인", + "collapse": "접기", + "collapse.all": "모두 접기", "copy": "복사", "create": "등록", "date": "날짜", - "date.select": "날짜 선택", + "date.select": "날짜 지정", "day": "일", "days.fri": "\uae08", @@ -22,12 +24,15 @@ "days.wed": "\uc218", "delete": "\uc0ad\uc81c", + "delete.all": "모두 삭제", "dimensions": "크기", "disabled": "비활성화", "discard": "무시", "download": "다운로드", "duplicate": "복제", "edit": "\ud3b8\uc9d1", + "expand": "열기", + "expand.all": "모두 열기", "dialog.files.empty": "선택한 파일이 없습니다.", "dialog.pages.empty": "선택한 페이지가 없습니다.", @@ -36,6 +41,7 @@ "email": "\uc774\uba54\uc77c \uc8fc\uc18c", "email.placeholder": "mail@example.com", + "error.access.code": "코드가 올바르지 않습니다.", "error.access.login": "로그인할 수 없습니다.", "error.access.panel": "패널에 접근할 권한이 없습니다.", "error.access.view": "패널에 접근할 권한이 없습니다.", @@ -47,6 +53,12 @@ "error.blueprint.notFound": "블루프린트({name})를 확인할 수 없습니다.", + "error.blocks.max.plural": "블록을 {max}개 이상 추가할 수 없습니다.", + "error.blocks.max.singular": "블록을 하나 이상 추가할 수 없습니다.", + "error.blocks.min.plural": "블록을 {min}개 이상 추가하세요.", + "error.blocks.min.singular": "블록을 하나 이상 추가하세요.", + "error.blocks.validation": "블록({index})이 올바르지 않습니다.", + "error.email.preset.notFound": "기본 이메일 주소({name})가 없습니다.", "error.field.converter.invalid": "컨버터({converter})가 올바르지 않습니다.", @@ -101,8 +113,8 @@ "error.page.duplicate.permission": "페이지({slug})를 복제할 권한이 없습니다.", "error.page.notFound": "페이지({slug})가 없습니다.", "error.page.num.invalid": "올바른 정수를 입력하세요.", - "error.page.slug.invalid": "올바른 접두사를 입력하세요.", - "error.page.slug.maxlength": "{length}자 이하로 지정하세요.", + "error.page.slug.invalid": "올바른 접두어를 입력하세요.", + "error.page.slug.maxlength": "{length}자 이하로 고유 주소를 입력하세요.", "error.page.sort.permission": "페이지({slug})를 정렬할 수 없습니다.", "error.page.status.invalid": "올바른 상태를 설정하세요.", "error.page.undefined": "\ud398\uc774\uc9c0\uac00 \uc5c6\uc2b5\ub2c8\ub2e4.", @@ -146,7 +158,7 @@ "error.user.password.invalid": "암호를 8자 이상으로 설정하세요.", "error.user.password.notSame": "\uc554\ud638\ub97c \ud655\uc778\ud558\uc138\uc694.", "error.user.password.undefined": "암호가 설정되지 않았습니다.", - "error.user.role.invalid": "올바른 역할을 입력하세요.", + "error.user.role.invalid": "올바른 역할을 지정하세요.", "error.user.update.permission": "사용자({name})의 정보를 변경할 권한이 없습니다.", "error.validation.accepted": "확인하세요.", @@ -154,7 +166,7 @@ "error.validation.alphanum": "로마자(a~z) 또는 숫자(0~9)만 입력할 수 있습니다.", "error.validation.between": "{min}, {max} 사이의 값을 입력하세요.", "error.validation.boolean": "확인하거나 취소하세요.", - "error.validation.contains": "다음을 포함한 값을 입력하세요: {needle}", + "error.validation.contains": "{needle}에 포함된 값을 입력하세요.", "error.validation.date": "올바른 날짜를 입력하세요.", "error.validation.date.after": "{date} 이후 날짜를 입력하세요.", "error.validation.date.before": "{date} 이전 날짜를 입력하세요.", @@ -164,7 +176,7 @@ "error.validation.email": "올바른 이메일 주소를 입력하세요.", "error.validation.endswith": "값은 다음으로 끝나야 합니다: {end}", "error.validation.filename": "올바른 파일명을 입력하세요.", - "error.validation.in": "다음 중 하나를 입력하세요: {in}", + "error.validation.in": "{in} 중 하나를 입력하세요.", "error.validation.integer": "올바른 정수를 입력하세요.", "error.validation.ip": "올바른 IP 주소를 입력하세요.", "error.validation.less": "{max} 미만의 값을 입력하세요.", @@ -181,26 +193,81 @@ "error.validation.option": "올바른 옵션을 선택하세요.", "error.validation.num": "올바른 숫자를 입력하세요.", "error.validation.required": "해당 항목을 확인하세요.", - "error.validation.same": "다음을 입력하세요: {other}", - "error.validation.size": "값의 크기는 다음과 같아야 합니다: {size}", + "error.validation.same": "이 값({other})을 입력하세요.", + "error.validation.size": "값의 크기({size})를 확인하세요. ", "error.validation.startswith": "값은 다음으로 시작해야 합니다: {start}", "error.validation.time": "올바른 시각을 입력하세요.", + "error.validation.time.after": "{time} 이후 시각을 입력하세요.", + "error.validation.time.before": "{time} 이전 시각을 입력하세요.", + "error.validation.time.between": "{min}, {max} 사이의 시각을 입력하세요.", "error.validation.url": "올바른 URL을 입력하세요.", "field.required": "필드를 채우세요.", + "field.blocks.changeType": "유형 변경", + "field.blocks.code.name": "언어 코드", + "field.blocks.code.language": "언어", + "field.blocks.code.placeholder": "코드 …", + "field.blocks.delete.confirm": "블록을 삭제할까요?", + "field.blocks.delete.confirm.all": "모든 블록을 삭제할까요?", + "field.blocks.delete.confirm.selected": "선택한 블록을 삭제할까요?", + "field.blocks.empty": "블록이 없습니다.", + "field.blocks.fieldsets.label": "블록의 유형을 선택하세요.", + "field.blocks.gallery.name": "갤러리", + "field.blocks.gallery.images.empty": "이미지가 없습니다.", + "field.blocks.gallery.images.label": "이미지", + "field.blocks.heading.level": "단계", + "field.blocks.heading.name": "제목", + "field.blocks.heading.text": "텍스트", + "field.blocks.heading.placeholder": "제목 …", + "field.blocks.image.alt": "대체 텍스트", + "field.blocks.image.caption": "캡션", + "field.blocks.image.crop": "자르기", + "field.blocks.image.link": "링크", + "field.blocks.image.location": "위치", + "field.blocks.image.name": "이미지", + "field.blocks.image.placeholder": "이미지 선택", + "field.blocks.image.ratio": "비율", + "field.blocks.list.name": "목록", + "field.blocks.markdown.name": "마크다운", + "field.blocks.markdown.label": "텍스트", + "field.blocks.markdown.placeholder": "마크다운 …", + "field.blocks.quote.name": "인용문", + "field.blocks.quote.text.label": "텍스트", + "field.blocks.quote.text.placeholder": "인용문 …", + "field.blocks.quote.citation.label": "출처", + "field.blocks.quote.citation.placeholder": "출처 …", + "field.blocks.text.name": "텍스트", + "field.blocks.text.placeholder": "텍스트 …", + "field.blocks.video.caption": "캡션", + "field.blocks.video.name": "영상", + "field.blocks.video.placeholder": "영상 URL 입력", + "field.blocks.video.url.label": "영상 URL", + "field.blocks.video.url.placeholder": "https://youtube.com/?v=", + "field.files.empty": "선택한 파일이 없습니다.", + + "field.layout.delete": "레이아웃 삭제", + "field.layout.delete.confirm": "레이아웃을 삭제할까요?", + "field.layout.empty": "행이 없습니다.", + "field.layout.select": "레이아웃 선택", + "field.pages.empty": "선택한 페이지가 없습니다.", "field.structure.delete.confirm": "이 항목을 삭제할까요?", "field.structure.empty": "항목이 없습니다.", "field.users.empty": "선택한 사용자가 없습니다.", - "file.delete.confirm": "파일({filename})을 삭제할까요?", + "file.blueprint": "블루프린트(/site/blueprints/{template}.yml)를 설정하세요.", + "file.delete.confirm": "파일({filename})을 삭제할까요?", + "file.sort": "순서 변경", "files": "파일", "files.empty": "파일이 없습니다.", + "hide": "숨기기", "hour": "시", "insert": "\uc0bd\uc785", + "insert.after": "앞에 삽입", + "insert.before": "뒤에 삽입", "install": "설치", "installation": "설치", @@ -219,9 +286,9 @@ "language": "\uc5b8\uc5b4", "language.code": "언어 코드", "language.convert": "기본 언어로 설정", - "language.convert.confirm": "이 언어({name})를 기본 언어로 설정할까요? 설정한 뒤에는 복원할 수 없으며, 이 언어로 번역되지 않은 항목은 올바르게 표시되지 않을 수 있습니다.", + "language.convert.confirm": "이 언어({name})를 기본 언어로 지정할까요? 지정한 뒤에는 복원할 수 없으며, 이 언어로 번역되지 않은 항목은 올바르게 표시되지 않을 수 있습니다.", "language.create": "새 언어 추가", - "language.delete.confirm": "언어({name})를 삭제할까요? 삭제한 뒤에는 복원할 수 없습니다.", + "language.delete.confirm": "언어({name})를 삭제할까요? 삭제한 뒤에는 복원할 수 없습니다.", "language.deleted": "언어를 삭제했습니다.", "language.direction": "읽기 방향", "language.direction.ltr": "왼쪽에서 오른쪽", @@ -240,7 +307,7 @@ "license": "라이선스", "license.buy": "라이선스 구매", "license.register": "등록", - "license.register.help": "이메일 주소로 라이선스 코드를 전송했습니다. Kirby를 등록하려면 라이선스 코드와 이메일 주소를 입력하세요.", + "license.register.help": "Kirby를 등록하려면 이메일로 전송받은 라이선스 코드와 이메일 주소를 입력하세요.", "license.register.label": "라이선스 코드를 입력하세요.", "license.register.success": "Kirby를 구입해주셔서 감사합니다.", "license.unregistered": "Kirby가 등록되지 않았습니다.", @@ -250,16 +317,29 @@ "loading": "로딩 중…", - "lock.unsaved": "저장되지 않은 수정 사항이 있습니다.", + "lock.unsaved": "저장되지 않은 항목이 있습니다", "lock.unsaved.empty": "모든 페이지를 저장했습니다.", - "lock.isLocked": "다른 사용자({email})가 수정한 사항이 저장되지 않았습니다.", + "lock.isLocked": "다른 사용자({email})가 수정한 사항이 저장되지 않았습니다.", "lock.file.isLocked": "파일을 편집할 수 없습니다. 다른 사용자({email})가 편집 중입니다.", - "lock.page.isLocked": "페이지를 편집할 수 없습니다. 다른 사용자({email}가 편집 중입니다.", + "lock.page.isLocked": "페이지를 편집할 수 없습니다. 다른 사용자({email})가 편집 중입니다.", "lock.unlock": "잠금", "lock.isUnlocked": "다른 사용자가 이미 내용을 수정했으므로 현재 내용이 올바르게 저장되지 않았습니다. 저장되지 않은 내용은 내려받아 수동으로 대치할 수 있습니다.", "login": "\ub85c\uadf8\uc778", + "login.code.label.login": "로그인 코드", + "login.code.label.password-reset": "암호 초기화 코드", + "login.code.placeholder.email": "000 000", + "login.code.text.email": "입력한 이메일 주소로 코드를 전송했습니다.", + "login.email.login.body": "{user.nameOrEmail} 님,\n\nKirby 패널에서 요청한 로그인 코드는 다음과 같습니다. 로그인 코드는 {timeout} 분 동안 유효합니다.\n\n{code}\n\n로그인 코드를 요청한 적이 없다면, 이 이메일을 무시하거나 관리자에게 문의하세요. 보안을 위해 이 이메일은 다른 사람과 공유하지 마세요.", + "login.email.login.subject": "로그인 코드", + "login.email.password-reset.body": "{user.nameOrEmail} 님,\n\nKirby 패널에서 요청한 로그인 코드는 다음과 같습니다. 로그인 코드는 {timeout} 분 동안 유효합니다.\n\n{code}\n\n로그인 코드를 요청한 적이 없다면, 이 이메일을 무시하거나 관리자에게 문의하세요. 보안을 위해 이 이메일은 다른 사람과 공유하지 마세요.", + "login.email.password-reset.subject": "암호 초기화 코드", "login.remember": "로그인 유지", + "login.reset": "암호 초기화", + "login.toggleText.code.email": "이메일 주소로 로그인", + "login.toggleText.code.email-password": "로그인", + "login.toggleText.password-reset.email": "암호 찾기", + "login.toggleText.password-reset.email-password": "로그인 화면으로", "logout": "\ub85c\uadf8\uc544\uc6c3", @@ -296,26 +376,28 @@ "orientation.portrait": "세로로 긴 사각형", "orientation.square": "정사각형", + "page.blueprint": "블루프린트(/site/blueprints/{template}.yml)를 설정하세요.", "page.changeSlug": "고유 주소 변경", "page.changeSlug.fromTitle": "제목에서 가져오기", "page.changeStatus": "상태 변경", - "page.changeStatus.position": "위치를 선택하세요.", + "page.changeStatus.position": "순서를 지정하세요.", "page.changeStatus.select": "새 상태 선택", "page.changeTemplate": "템플릿 변경", - "page.delete.confirm": "페이지({title})를 삭제할까요?", + "page.delete.confirm": "페이지({title})를 삭제할까요?", "page.delete.confirm.subpages": "페이지에 하위 페이지가 있습니다. 모든 하위 페이지가 삭제됩니다.", - "page.delete.confirm.title": "페이지 제목을 입력하세요.", + "page.delete.confirm.title": "페이지의 제목을 입력하세요.", "page.draft.create": "초안 등록", "page.duplicate.appendix": "복사", "page.duplicate.files": "파일 복사", "page.duplicate.pages": "페이지 복사", + "page.sort": "순서 변경", "page.status": "상태", "page.status.draft": "초안", - "page.status.draft.description": "로그인한 사용자나 URL을 통해서만 읽을 수 있습니다.", + "page.status.draft.description": "로그인한 사용자나 URL을 통해 접근할 수 있습니다.", "page.status.listed": "공개", "page.status.listed.description": "누구나 읽을 수 있습니다.", "page.status.unlisted": "비공개", - "page.status.unlisted.description": "URL을 통해서만 접근할 수 있습니다.", + "page.status.unlisted.description": "URL을 통해 접근할 수 있습니다.", "pages": "하위 페이지", "pages.empty": "페이지가 없습니다.", @@ -328,6 +410,7 @@ "password": "\uc554\ud638", "pixel": "픽셀", "prev": "이전", + "preview": "미리 보기", "remove": "삭제", "rename": "제목 변경", "replace": "\uad50\uccb4", @@ -354,6 +437,7 @@ "select": "선택", "settings": "설정", + "show": "보기", "size": "크기", "slug": "고유 주소", "sort": "정렬", @@ -361,6 +445,8 @@ "template": "\ud15c\ud50c\ub9bf", "today": "오늘", + "site.blueprint": "블루프린트(/site/blueprints/site.yml)를 설정하세요.", + "toolbar.button.code": "코드", "toolbar.button.bold": "강조 1", "toolbar.button.email": "이메일 주소", @@ -391,7 +477,7 @@ "upload.error.iniSize": "업로드한 파일이 허용된 크기(upload_max_filesize)를 초과했습니다.", "upload.error.noFile": "업로드한 파일이 없습니다.", "upload.error.noFiles": "업로드한 파일이 없습니다.", - "upload.error.partial": "일부 파일만 업로드했습니다.", + "upload.error.partial": "일부 파일을 업로드했습니다.", "upload.error.tmpDir": "임시 폴더가 없습니다.", "upload.errors": "오류", "upload.progress": "업로드 중…", @@ -400,7 +486,7 @@ "url.placeholder": "https://example.com", "user": "사용자", - "user.blueprint": "파일(/site/blueprints/users/{role}.yml)에 섹션 및 폼 필드를 추가할 수 있습니다.", + "user.blueprint": "블루프린트(/site/blueprints/users/{role}.yml)에 섹션과 필드를 추가할 수 있습니다.", "user.changeEmail": "이메일 주소 변경", "user.changeLanguage": "언어 변경", "user.changeName": "사용자명 변경", @@ -411,7 +497,7 @@ "user.changeRole.select": "새 역할 선택", "user.create": "사용자 추가", "user.delete": "사용자 삭제", - "user.delete.confirm": "사용자({email})를 삭제할까요?", + "user.delete.confirm": "사용자({email})를 삭제할까요?", "users": "사용자", @@ -419,10 +505,11 @@ "view.account": "계정", "view.installation": "\uc124\uce58", + "view.resetPassword": "암호 초기화", "view.settings": "설정", "view.site": "사이트", "view.users": "\uc0ac\uc6a9\uc790", - "welcome": "안녕하세요?", + "welcome": "반갑습니다.", "year": "년" } diff --git a/kirby/i18n/translations/lt.json b/kirby/i18n/translations/lt.json index 7b68cc2..bbe2792 100755 --- a/kirby/i18n/translations/lt.json +++ b/kirby/i18n/translations/lt.json @@ -6,6 +6,8 @@ "change": "Keisti", "close": "Uždaryti", "confirm": "Ok", + "collapse": "Sutraukti", + "collapse.all": "Sutraukti viską", "copy": "Kopijuoti", "create": "Sukurti", @@ -22,12 +24,15 @@ "days.wed": "Tre", "delete": "Pašalinti", + "delete.all": "Pašalinti viską", "dimensions": "Išmatavimai", "disabled": "Išjungta", "discard": "Atšaukti", "download": "Parsisiųsti", "duplicate": "Kopijuoti", "edit": "Redaguoti", + "expand": "Išskleisti", + "expand.all": "Išskleisti viską", "dialog.files.empty": "Nėra failų pasirinkimui", "dialog.pages.empty": "Nėra puslapių pasirinkimui", @@ -36,6 +41,7 @@ "email": "El. paštas", "email.placeholder": "mail@example.com", + "error.access.code": "Invalid code", "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", @@ -47,6 +53,12 @@ "error.blueprint.notFound": "Blueprint \"{name}\" negali būti užkrautas", + "error.blocks.max.plural": "Didžiausias įmanomas blokų kiekis: {max}", + "error.blocks.max.singular": "Jūs galite pridėti daugiausiai vieną bloką", + "error.blocks.min.plural": "Minimalus blokų kiekis: {min}", + "error.blocks.min.singular": "Jūs turite pridėti bent vieną bloką", + "error.blocks.validation": "Bloke {index} yra klaida", + "error.email.preset.notFound": "El. pašto paruoštukas \"{name}\" nerastas", "error.field.converter.invalid": "Neteisingas konverteris \"{converter}\"", @@ -102,7 +114,7 @@ "error.page.notFound": "Puslapis \"{slug}\" nerastas", "error.page.num.invalid": "Įrašykite teisingą eiliškumo numerį. Numeris negali būti neigiamas.", "error.page.slug.invalid": "Įrašykite teisingą URL prefiksą", - "error.page.slug.maxlength": "Slug length must be less than \"{length}\" characters", + "error.page.slug.maxlength": "url adreso maksimalus simbolių kiekis: \"{length}\"", "error.page.sort.permission": "Puslapiui \"{slug}\" negalima pakeisti eiliškumo", "error.page.status.invalid": "Nustatykite teisingą puslapio statusą", "error.page.undefined": "Puslapis nerastas", @@ -185,22 +197,77 @@ "error.validation.size": "Reikšmės dydis turi būti \"{size}\"", "error.validation.startswith": "Reikšmė turi prasidėti su \"{start}\"", "error.validation.time": "Prašome įrašyti korektišką laiką", + "error.validation.time.after": "Įrašykite laiką po {time}", + "error.validation.time.before": "Įrašykite laiką prieš {time}", + "error.validation.time.between": "Įrašykite laiką tarp {min} ir {max}", "error.validation.url": "Prašome įrašyti teisingą URL", "field.required": "Laukas privalomas", + "field.blocks.changeType": "Pakeisti tipą", + "field.blocks.code.name": "Kodas", + "field.blocks.code.language": "Kalba", + "field.blocks.code.placeholder": "Jūsų kodas ...", + "field.blocks.delete.confirm": "Ar tikrai norite pašalinti šį bloką?", + "field.blocks.delete.confirm.all": "Ar tikrai norite pašalinti visus blokus?", + "field.blocks.delete.confirm.selected": "Ar tikrai norite pašalinti pasirinktus blokus?", + "field.blocks.empty": "Dar nėra blokų", + "field.blocks.fieldsets.label": "Pasirinkite bloko tipą ...", + "field.blocks.gallery.name": "Galerija", + "field.blocks.gallery.images.empty": "Dar nėra nuotraukų", + "field.blocks.gallery.images.label": "Nuotraukos", + "field.blocks.heading.level": "Lygis", + "field.blocks.heading.name": "Antraštė", + "field.blocks.heading.text": "Tekstas", + "field.blocks.heading.placeholder": "Antraštė ...", + "field.blocks.image.alt": "Alternatyvus tekstas", + "field.blocks.image.caption": "Aprašymas", + "field.blocks.image.crop": "Kirpti", + "field.blocks.image.link": "Nuoroda", + "field.blocks.image.location": "Location", + "field.blocks.image.name": "Nuotrauka", + "field.blocks.image.placeholder": "Pasirinkite nuotrauką", + "field.blocks.image.ratio": "Proporcijos", + "field.blocks.list.name": "Sąrašas", + "field.blocks.markdown.name": "Markdown", + "field.blocks.markdown.label": "Tekstas", + "field.blocks.markdown.placeholder": "Markdown ...", + "field.blocks.quote.name": "Citata", + "field.blocks.quote.text.label": "Tekstas", + "field.blocks.quote.text.placeholder": "Citata ...", + "field.blocks.quote.citation.label": "Citatos turinys", + "field.blocks.quote.citation.placeholder": "autorius", + "field.blocks.text.name": "Tekstas", + "field.blocks.text.placeholder": "Tekstas ...", + "field.blocks.video.caption": "Aprašymas", + "field.blocks.video.name": "Video", + "field.blocks.video.placeholder": "Įrašykite video URL", + "field.blocks.video.url.label": "Video-URL", + "field.blocks.video.url.placeholder": "https://youtube.com/?v=", + "field.files.empty": "Pasirinkti", + + "field.layout.delete": "Pašalinti eilutę", + "field.layout.delete.confirm": "Ar tikrai norite pašalinti šią eilutę", + "field.layout.empty": "Dar nėra eilučių", + "field.layout.select": "Pasirinkite išdėstymą", + "field.pages.empty": "Dar nėra puslapių", "field.structure.delete.confirm": "Ar tikrai norite pašalinti šią eilutę?", "field.structure.empty": "Dar nėra įrašų", "field.users.empty": "Dar nėra vartotojų", + "file.blueprint": "Šis failas dar neturi blueprint. Jūs galite nustatyti jį /site/blueprints/{template}.yml", "file.delete.confirm": "Ar tikrai norite pašalinti
{filename}?", + "file.sort": "Pakeisti poziciją", "files": "Failai", "files.empty": "Įkelti", + "hide": "Paslėpti", "hour": "Valanda", "insert": "Įterpti", + "insert.after": "Įterpti po", + "insert.before": "Įterpti prieš", "install": "Įdiegti", "installation": "Įdiegimas", @@ -259,7 +326,20 @@ "lock.isUnlocked": "Jūsų neišsaugoti pakeitimai buvo perrašyti kito vartotojo. Galite parsisiųsti savo pakeitimus ir įkelti juos rankiniu būdu.", "login": "Prisijungti", + "login.code.label.login": "Login code", + "login.code.label.password-reset": "Password reset code", + "login.code.placeholder.email": "000 000", + "login.code.text.email": "If your email address is registered, the requested code was sent via email.", + "login.email.login.body": "Hi {user.nameOrEmail},\n\nYou recently requested a login code for the Kirby Panel.\nThe following login code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a login code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.", + "login.email.login.subject": "Your login code", + "login.email.password-reset.body": "Hi {user.nameOrEmail},\n\nYou recently requested a password reset code for the Kirby Panel.\nThe following password reset code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a password reset code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.", + "login.email.password-reset.subject": "Your password reset code", "login.remember": "Likti prisijungus", + "login.reset": "Sukurti naują slaptažodį", + "login.toggleText.code.email": "Login via email", + "login.toggleText.code.email-password": "Login with password", + "login.toggleText.password-reset.email": "Forgot your password?", + "login.toggleText.password-reset.email-password": "← Back to login", "logout": "Atsijungti", @@ -289,13 +369,14 @@ "on": "on", "open": "Atidaryti", "options": "Pasirinkimai", - "options.none": "No options", + "options.none": "Nėra pasirinkimų", "orientation": "Orientacija", "orientation.landscape": "Horizontali", "orientation.portrait": "Portretas", "orientation.square": "Kvadratas", + "page.blueprint": "Šis puslapis dar neturi blueprint. Jūs galite nustatyti jį /site/blueprints/{template}.yml", "page.changeSlug": "Pakeisti URL", "page.changeSlug.fromTitle": "Sukurti URL pagal pavadinimą", "page.changeStatus": "Pakeisti statusą", @@ -309,6 +390,7 @@ "page.duplicate.appendix": "Kopijuoti", "page.duplicate.files": "Kopijuoti failus", "page.duplicate.pages": "Kopijuoti puslapius", + "page.sort": "Pakeisti poziciją", "page.status": "Statusas", "page.status.draft": "Juodraštis", "page.status.draft.description": "Šis puslapis yra juodraščio režime ir prieinamas tik redaktoriams arba per slaptą nuorodą", @@ -328,6 +410,7 @@ "password": "Slaptažodis", "pixel": "Pikselis", "prev": "Ankstesnis", + "preview": "Peržiūra", "remove": "Pašalinti", "rename": "Pervadinti", "replace": "Apkeisti", @@ -346,14 +429,15 @@ "save": "Išsaugoti", "search": "Ieškoti", - "search.min": "Enter {min} characters to search", - "search.all": "Show all", - "search.results.none": "No results", + "search.min": "Minimalus simbolių kiekis paieškai: {min}", + "search.all": "Rodyti viską", + "search.results.none": "Nėra rezultatų", "section.required": "Sekcija privaloma", "select": "Pasirinkti", "settings": "Nustatymai", + "show": "Rodyti", "size": "Dydis", "slug": "URL pabaiga", "sort": "Rikiuoti", @@ -361,6 +445,8 @@ "template": "Puslapio šablonas", "today": "Šiandien", + "site.blueprint": "Svetainė neturi blueprint. Jūs galite nustatyti jį /site/blueprints/site.yml", + "toolbar.button.code": "Kodas", "toolbar.button.bold": "Bold", "toolbar.button.email": "El. paštas", @@ -419,6 +505,7 @@ "view.account": "Jūsų paskyra", "view.installation": "Installation", + "view.resetPassword": "Sukurti naują slaptažodį", "view.settings": "Nustatymai", "view.site": "Svetainė", "view.users": "Vartotojai", diff --git a/kirby/i18n/translations/nb.json b/kirby/i18n/translations/nb.json index 32786df..bceb45b 100755 --- a/kirby/i18n/translations/nb.json +++ b/kirby/i18n/translations/nb.json @@ -6,6 +6,8 @@ "change": "Endre", "close": "Lukk", "confirm": "Lagre", + "collapse": "Collapse", + "collapse.all": "Collapse All", "copy": "Kopier", "create": "Opprett", @@ -22,12 +24,15 @@ "days.wed": "Ons", "delete": "Slett", + "delete.all": "Delete all", "dimensions": "Dimensjoner", "disabled": "Disabled", "discard": "Forkast", "download": "Download", "duplicate": "Duplicate", "edit": "Rediger", + "expand": "Expand", + "expand.all": "Expand All", "dialog.files.empty": "No files to select", "dialog.pages.empty": "No pages to select", @@ -36,6 +41,7 @@ "email": "Epost", "email.placeholder": "epost@eksempel.no", + "error.access.code": "Invalid code", "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", @@ -47,6 +53,12 @@ "error.blueprint.notFound": "Blueprint \"{name}\" kunne ikke lastes inn", + "error.blocks.max.plural": "You must not add more than {max} blocks", + "error.blocks.max.singular": "You must not add more than one block", + "error.blocks.min.plural": "You must add at least {min} blocks", + "error.blocks.min.singular": "You must add at least one block", + "error.blocks.validation": "There's an error in block {index}", + "error.email.preset.notFound": "E-postinnstillingen \"{name}\" ble ikke funnet", "error.field.converter.invalid": "Ugyldig omformer \"{converter}\"", @@ -185,22 +197,77 @@ "error.validation.size": "Størrelsen på verdien må være \"{size}\"", "error.validation.startswith": "Verdien må starte med \"{start}\"", "error.validation.time": "Vennligst angi et gyldig tidspunkt", + "error.validation.time.after": "Please enter a time after {time}", + "error.validation.time.before": "Please enter a time before {time}", + "error.validation.time.between": "Please enter a time between {min} and {max}", "error.validation.url": "Vennligst skriv inn en gyldig URL", "field.required": "The field is required", + "field.blocks.changeType": "Change type", + "field.blocks.code.name": "Kode", + "field.blocks.code.language": "Språk", + "field.blocks.code.placeholder": "Your code …", + "field.blocks.delete.confirm": "Do you really want to delete this block?", + "field.blocks.delete.confirm.all": "Do you really want to delete all blocks?", + "field.blocks.delete.confirm.selected": "Do you really want to delete the selected blocks?", + "field.blocks.empty": "No blocks yet", + "field.blocks.fieldsets.label": "Please select a block type …", + "field.blocks.gallery.name": "Gallery", + "field.blocks.gallery.images.empty": "No images yet", + "field.blocks.gallery.images.label": "Images", + "field.blocks.heading.level": "Level", + "field.blocks.heading.name": "Heading", + "field.blocks.heading.text": "Text", + "field.blocks.heading.placeholder": "Heading …", + "field.blocks.image.alt": "Alternative text", + "field.blocks.image.caption": "Caption", + "field.blocks.image.crop": "Crop", + "field.blocks.image.link": "Adresse", + "field.blocks.image.location": "Location", + "field.blocks.image.name": "Bilde", + "field.blocks.image.placeholder": "Select an image", + "field.blocks.image.ratio": "Ratio", + "field.blocks.list.name": "List", + "field.blocks.markdown.name": "Markdown", + "field.blocks.markdown.label": "Text", + "field.blocks.markdown.placeholder": "Markdown …", + "field.blocks.quote.name": "Quote", + "field.blocks.quote.text.label": "Text", + "field.blocks.quote.text.placeholder": "Quote …", + "field.blocks.quote.citation.label": "Citation", + "field.blocks.quote.citation.placeholder": "by …", + "field.blocks.text.name": "Text", + "field.blocks.text.placeholder": "Text …", + "field.blocks.video.caption": "Caption", + "field.blocks.video.name": "Video", + "field.blocks.video.placeholder": "Enter a video URL", + "field.blocks.video.url.label": "Video-URL", + "field.blocks.video.url.placeholder": "https://youtube.com/?v=", + "field.files.empty": "Ingen filer har blitt valgt", + + "field.layout.delete": "Delete layout", + "field.layout.delete.confirm": "Do you really want to delete this layout?", + "field.layout.empty": "No rows yet", + "field.layout.select": "Select a layout", + "field.pages.empty": "Ingen side har blitt valgt", "field.structure.delete.confirm": "\u00d8nsker du virkelig \u00e5 slette denne oppf\u00f8ringen?", "field.structure.empty": "Ingen oppf\u00f8ringer enda", "field.users.empty": "Ingen bruker har blitt valgt", + "file.blueprint": "This file has no blueprint yet. You can define the setup in /site/blueprints/{template}.yml", "file.delete.confirm": "Vil du virkelig slette denne filen?", + "file.sort": "Change position", "files": "Filer", "files.empty": "Ingen filer ennå", + "hide": "Hide", "hour": "Time", "insert": "Sett Inn", + "insert.after": "Insert after", + "insert.before": "Insert before", "install": "Installer", "installation": "Installasjon", @@ -259,7 +326,20 @@ "lock.isUnlocked": "Your unsaved changes have been overwritten by another user. You can download your changes to merge them manually.", "login": "Logg Inn", + "login.code.label.login": "Login code", + "login.code.label.password-reset": "Password reset code", + "login.code.placeholder.email": "000 000", + "login.code.text.email": "If your email address is registered, the requested code was sent via email.", + "login.email.login.body": "Hi {user.nameOrEmail},\n\nYou recently requested a login code for the Kirby Panel.\nThe following login code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a login code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.", + "login.email.login.subject": "Your login code", + "login.email.password-reset.body": "Hi {user.nameOrEmail},\n\nYou recently requested a password reset code for the Kirby Panel.\nThe following password reset code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a password reset code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.", + "login.email.password-reset.subject": "Your password reset code", "login.remember": "Hold meg innlogget", + "login.reset": "Reset password", + "login.toggleText.code.email": "Login via email", + "login.toggleText.code.email-password": "Login with password", + "login.toggleText.password-reset.email": "Forgot your password?", + "login.toggleText.password-reset.email-password": "← Back to login", "logout": "Logg ut", @@ -296,6 +376,7 @@ "orientation.portrait": "Portrett", "orientation.square": "Kvadrat", + "page.blueprint": "This page has no blueprint yet. You can define the setup in /site/blueprints/{template}.yml", "page.changeSlug": "Endre URL", "page.changeSlug.fromTitle": "Opprett fra tittel", "page.changeStatus": "Endre status", @@ -309,6 +390,7 @@ "page.duplicate.appendix": "Kopier", "page.duplicate.files": "Copy files", "page.duplicate.pages": "Copy pages", + "page.sort": "Change position", "page.status": "Status", "page.status.draft": "Utkast", "page.status.draft.description": "The page is in draft mode and only visible for logged in editors or via secret link", @@ -328,6 +410,7 @@ "password": "Passord", "pixel": "Piksel", "prev": "Forrige", + "preview": "Preview", "remove": "Fjern", "rename": "Endre navn", "replace": "Erstatt", @@ -354,6 +437,7 @@ "select": "Velg", "settings": "Innstillinger", + "show": "Show", "size": "Størrelse", "slug": "URL-appendiks", "sort": "Sortere", @@ -361,6 +445,8 @@ "template": "Mal", "today": "I dag", + "site.blueprint": "The site has no blueprint yet. You can define the setup in /site/blueprints/site.yml", + "toolbar.button.code": "Kode", "toolbar.button.bold": "Tykk tekst", "toolbar.button.email": "Epost", @@ -419,6 +505,7 @@ "view.account": "Din konto", "view.installation": "Installasjon", + "view.resetPassword": "Reset password", "view.settings": "Innstillinger", "view.site": "Side", "view.users": "Brukere", diff --git a/kirby/i18n/translations/nl.json b/kirby/i18n/translations/nl.json index 91645f3..419ecd6 100755 --- a/kirby/i18n/translations/nl.json +++ b/kirby/i18n/translations/nl.json @@ -6,6 +6,8 @@ "change": "Wijzigen", "close": "Sluiten", "confirm": "OK", + "collapse": "Sluit", + "collapse.all": "Sluit alles", "copy": "Kopiëren", "create": "Aanmaken", @@ -22,12 +24,15 @@ "days.wed": "Wo", "delete": "Verwijderen", + "delete.all": "Verwijder alles", "dimensions": "Dimensies", "disabled": "Uitgeschakeld", "discard": "Annuleren", "download": "Download", "duplicate": "Dupliceren", "edit": "Wijzig", + "expand": "Open", + "expand.all": "Open alles", "dialog.files.empty": "Geen bestanden om te selecteren", "dialog.pages.empty": "Geen pagina's om te selecteren", @@ -36,6 +41,7 @@ "email": "E-mailadres", "email.placeholder": "mail@voorbeeld.nl", + "error.access.code": "Invalid code", "error.access.login": "Ongeldige login", "error.access.panel": "Je hebt geen toegang tot het Panel", "error.access.view": "Je hebt geen toegangsrechten voor deze zone van het Panel", @@ -47,6 +53,12 @@ "error.blueprint.notFound": "De blueprint \"{name}\" kon niet geladen worden", + "error.blocks.max.plural": "Je kunt niet meer dan {max} blokken toevoegen", + "error.blocks.max.singular": "Je kunt niet meer dan één blok toevoegen", + "error.blocks.min.plural": "Je moet ten minste {min} blok toevoegen", + "error.blocks.min.singular": "Je moet ten minste één blok toevoegen", + "error.blocks.validation": "Er is een fout gevonden in blok {index}", + "error.email.preset.notFound": "De e-mailvoorinstelling \"{name}\" kan niet worden gevonden", "error.field.converter.invalid": "Ongeldige converter \"{converter}\"", @@ -56,19 +68,19 @@ "error.file.duplicate": "Er bestaat al een bestand met de naam \"{filename}\"", "error.file.extension.forbidden": "Bestandsextensie \"{extension}\" is niet toegestaan", "error.file.extension.missing": "Je kunt geen bestanden uploaden zonder bestandsextensie", - "error.file.maxheight": "The height of the image must not exceed {height} pixels", - "error.file.maxsize": "The file is too large", - "error.file.maxwidth": "The width of the image must not exceed {width} pixels", + "error.file.maxheight": "De hoogte van de afbeelding mag niet groter zijn dan {height} pixels", + "error.file.maxsize": "Het bestand is te groot", + "error.file.maxwidth": "De breedte van de afbeelding mag niet groter zijn dan {width} pixels", "error.file.mime.differs": "Het geüploade bestand moet van hetzelfde mime-type zijn: \"{mime}\"", "error.file.mime.forbidden": "Het type \"{mime}\" is niet toegestaan", - "error.file.mime.invalid": "Invalid mime type: {mime}", + "error.file.mime.invalid": "Ongeldig media type: {mine}", "error.file.mime.missing": "Het mediatype voor \"{filename}\" kan niet worden gedecteerd", - "error.file.minheight": "The height of the image must be at least {height} pixels", - "error.file.minsize": "The file is too small", - "error.file.minwidth": "The width of the image must be at least {width} pixels", + "error.file.minheight": "De hoogte van de afbeelding moet minimaal {height} pixels zijn", + "error.file.minsize": "Het bestand is te klein", + "error.file.minwidth": "De breedte van de afbeelding moet minimaal {width} pixels zijn", "error.file.name.missing": "De bestandsnaam mag niet leeg zijn", "error.file.notFound": "Het bestand kan niet worden gevonden", - "error.file.orientation": "The orientation of the image must be \"{orientation}\"", + "error.file.orientation": "De oriëntatie van de afbeelding moet \"{orientation}\" zijn", "error.file.type.forbidden": "Je hebt geen rechten om {type} bestanden up te loaden", "error.file.undefined": "Het bestand kan niet worden gevonden", @@ -102,7 +114,7 @@ "error.page.notFound": "De pagina \"{slug}\" kan niet worden gevonden", "error.page.num.invalid": "Vul een geldig sorteer-cijfer in. Het cijfer mag niet negatief zijn", "error.page.slug.invalid": "Vul een geldige URL-prefix in", - "error.page.slug.maxlength": "Slug length must be less than \"{length}\" characters", + "error.page.slug.maxlength": "Slug lengte moet minder dan \"{length}\" tekens bevatten", "error.page.sort.permission": "De pagina \"{slug}\" kan niet worden gesorteerd", "error.page.status.invalid": "Zorg voor een geldige paginastatus", "error.page.undefined": "De pagina kan niet worden gevonden", @@ -171,13 +183,13 @@ "error.validation.match": "De invoer klopt niet met het verwachte patroon", "error.validation.max": "Vul een waarde in die gelijk is aan of lager dan {max}", "error.validation.maxlength": "Gebruik minder karakters (maximaal {max} karakters)", - "error.validation.maxwords": "Vul minder dan {max} woorden in", + "error.validation.maxwords": "Vul minder dan {max} woord(en) in", "error.validation.min": "Vul een waarde in die gelijk is aan of groter dan {min}", "error.validation.minlength": "Gebruik meer karakters (minimaal {min} karakters)", - "error.validation.minwords": "Vul minimaal {min} woorden in", + "error.validation.minwords": "Vul minimaal {min} woord(en) in", "error.validation.more": "Vul een grotere waarde in dan {min}", "error.validation.notcontains": "Zorg dat de invoer niet \"{needle}\" bevat", - "error.validation.notin": "Vul de volgende dingen niet in: {{notIn}}", + "error.validation.notin": "Vul de volgende dingen niet in: ({notIn})", "error.validation.option": "Selecteer een geldige optie", "error.validation.num": "Vul een geldig cijfer in", "error.validation.required": "Vul iets in", @@ -185,22 +197,77 @@ "error.validation.size": "De lengte van de invoer moet \"{size}\" zijn", "error.validation.startswith": "De invoer moet beginnen met \"{start}\"", "error.validation.time": "Vul een geldige tijd in", + "error.validation.time.after": "Voer een tijd in na {time}", + "error.validation.time.before": "Voer een tijd in voor {time}", + "error.validation.time.between": "Voer een tijd in tussen {min} en {max}", "error.validation.url": "Vul een geldige URL in", "field.required": "Dit veld is verplicht", + "field.blocks.changeType": "Wijzig type", + "field.blocks.code.name": "Code", + "field.blocks.code.language": "Taal", + "field.blocks.code.placeholder": "Jouw code ...", + "field.blocks.delete.confirm": "Wil je echt dit blok wilt verwijderen?", + "field.blocks.delete.confirm.all": "Wil je echt alle blokken verwijderen?", + "field.blocks.delete.confirm.selected": "Wil je de geselecteerde blokken echt verwijderen?", + "field.blocks.empty": "Nog geen blokken", + "field.blocks.fieldsets.label": "Selecteer een bloktype ...", + "field.blocks.gallery.name": "Galerij", + "field.blocks.gallery.images.empty": "Nog geen afbeeldingen", + "field.blocks.gallery.images.label": "Afbeeldingen", + "field.blocks.heading.level": "Niveau", + "field.blocks.heading.name": "Koptekst", + "field.blocks.heading.text": "Tekst", + "field.blocks.heading.placeholder": "Koptekst ...", + "field.blocks.image.alt": "Alternatieve tekst", + "field.blocks.image.caption": "Beschrijving", + "field.blocks.image.crop": "Uitsnede", + "field.blocks.image.link": "Link", + "field.blocks.image.location": "Location", + "field.blocks.image.name": "Afbeelding", + "field.blocks.image.placeholder": "Selecteer een afbeelding", + "field.blocks.image.ratio": "Verhouding", + "field.blocks.list.name": "Lijst", + "field.blocks.markdown.name": "Markdown", + "field.blocks.markdown.label": "Tekst", + "field.blocks.markdown.placeholder": "Markdown ...", + "field.blocks.quote.name": "Citaat", + "field.blocks.quote.text.label": "Tekst", + "field.blocks.quote.text.placeholder": "Citaat ...", + "field.blocks.quote.citation.label": "Bron", + "field.blocks.quote.citation.placeholder": "door ...", + "field.blocks.text.name": "Tekst", + "field.blocks.text.placeholder": "Tekst ...", + "field.blocks.video.caption": "Beschrijving", + "field.blocks.video.name": "Video", + "field.blocks.video.placeholder": "Voer een video link in", + "field.blocks.video.url.label": "Video link", + "field.blocks.video.url.placeholder": "https://youtube.com/?v=", + "field.files.empty": "Nog geen bestanden geselecteerd", + + "field.layout.delete": "Verwijder indeling", + "field.layout.delete.confirm": "Weet je zeker dat je deze indeling wilt verwijderen?", + "field.layout.empty": "Er zijn nog geen rijen", + "field.layout.select": "Selecteer een indeling", + "field.pages.empty": "Nog geen pagina's geselecteerd", "field.structure.delete.confirm": "Wil je deze entry verwijderen?", "field.structure.empty": "Nog geen items.", "field.users.empty": "Nog geen gebruikers geselecteerd", + "file.blueprint": "Dit bestand heeft nog geen ontwerp. Je kan het ontwerp hier plaatsen /site/blueprints/{template}.yml", "file.delete.confirm": "Wil je dit bestand
{filename} verwijderen?", + "file.sort": "Verander positie", "files": "Bestanden", "files.empty": "Nog geen bestanden", + "hide": "Verberg", "hour": "Uur", "insert": "Toevoegen", + "insert.after": "Voeg toe na", + "insert.before": "Voeg toe voor", "install": "Installeren", "installation": "Installatie", @@ -227,7 +294,7 @@ "language.direction.ltr": "Links naar rechts", "language.direction.rtl": "Rechts naar links", "language.locale": "PHP-locale regel", - "language.locale.warning": "You are using a custom locale set up. Please modify it in the language file in /site/languages", + "language.locale.warning": "Je gebruikt een aangepaste landinstelling. Wijzig het het taalbestand in /site/languages", "language.name": "Naam", "language.updated": "De taal is geüpdatet", @@ -259,7 +326,20 @@ "lock.isUnlocked": "Je niet opgeslagen wijzigingen zijn overschreven door een andere gebruiker. Je kunt je wijzigingen downloaden om ze handmatig samen te voegen.", "login": "Inloggen", + "login.code.label.login": "Login code", + "login.code.label.password-reset": "Password reset code", + "login.code.placeholder.email": "000 000", + "login.code.text.email": "If your email address is registered, the requested code was sent via email.", + "login.email.login.body": "Hi {user.nameOrEmail},\n\nYou recently requested a login code for the Kirby Panel.\nThe following login code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a login code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.", + "login.email.login.subject": "Your login code", + "login.email.password-reset.body": "Hi {user.nameOrEmail},\n\nYou recently requested a password reset code for the Kirby Panel.\nThe following password reset code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a password reset code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.", + "login.email.password-reset.subject": "Your password reset code", "login.remember": "Houd mij ingelogd", + "login.reset": "Wachtwoord herstellen", + "login.toggleText.code.email": "Login via email", + "login.toggleText.code.email-password": "Login with password", + "login.toggleText.password-reset.email": "Forgot your password?", + "login.toggleText.password-reset.email-password": "← Back to login", "logout": "Uitloggen", @@ -289,13 +369,14 @@ "on": "aan", "open": "Open", "options": "Opties", - "options.none": "No options", + "options.none": "Geen opties beschikbaar", "orientation": "Oriëntatie", "orientation.landscape": "Liggend", "orientation.portrait": "Staand", "orientation.square": "Vierkant", + "page.blueprint": "Deze pagina heeft nog geen ontwerp. Je kan het ontwerp hier plaatsten /site/blueprints/{template}.yml", "page.changeSlug": "Verander URL", "page.changeSlug.fromTitle": "Aanmaken op basis van titel", "page.changeStatus": "Wijzig status", @@ -303,15 +384,16 @@ "page.changeStatus.select": "Selecteer een nieuwe status", "page.changeTemplate": "Verander template", "page.delete.confirm": "Weet je zeker dat je pagina {title} wilt verwijderen?", - "page.delete.confirm.subpages": "Deze pagina heeft subpagina's.
Alle subpagina's worden ook verwijderd.", + "page.delete.confirm.subpages": "Deze pagina heeft subpagina's.
Alle subpagina's zullen ook worden verwijderd.", "page.delete.confirm.title": "Voeg een paginatitel in om te bevestigen", "page.draft.create": "Maak concept", "page.duplicate.appendix": "Kopiëren", "page.duplicate.files": "Kopieer bestanden", "page.duplicate.pages": "Kopieer pagina's", + "page.sort": "Verander positie", "page.status": "Status", "page.status.draft": "Concept", - "page.status.draft.description": "The page is in draft mode and only visible for logged in editors or via secret link", + "page.status.draft.description": "De pagina is in concept-modus en alleen zichtbaar voor ingelogde redacteuren of via een geheime link", "page.status.listed": "Openbaar", "page.status.listed.description": "Deze pagina is toegankelijk voor iedereen", "page.status.unlisted": "Niet gepubliceerd", @@ -328,12 +410,13 @@ "password": "Wachtwoord", "pixel": "Pixel", "prev": "Vorige", + "preview": "Voorbeeld", "remove": "Verwijder", "rename": "Hernoem", "replace": "Vervang", "retry": "Probeer opnieuw", "revert": "Annuleren", - "revert.confirm": "Do you really want to delete all unsaved changes?", + "revert.confirm": "Weet je zeker dat je alle niet-opgeslagen veranderingen wilt verwijderen?", "role": "Rol", "role.admin.description": "De admin heeft alle rechten", @@ -346,14 +429,15 @@ "save": "Opslaan", "search": "Zoeken", - "search.min": "Enter {min} characters to search", - "search.all": "Show all", - "search.results.none": "No results", + "search.min": "Voer {min} tekens in om te zoeken", + "search.all": "Toon alles", + "search.results.none": "Geen resultaten", "section.required": "De sectie is verplicht", "select": "Selecteren", "settings": "Opties", + "show": "Toon", "size": "Grootte", "slug": "URL-toevoeging", "sort": "Sorteren", @@ -361,13 +445,15 @@ "template": "Template", "today": "Vandaag", + "site.blueprint": "Deze website heeft nog geen ontwerp. Je kan het ontwerp hier plaatsen/site/blueprints/site.yml", + "toolbar.button.code": "Code", "toolbar.button.bold": "Dikgedrukte tekst", "toolbar.button.email": "E-mailadres", - "toolbar.button.headings": "Titels", - "toolbar.button.heading.1": "Titel 1", - "toolbar.button.heading.2": "Titel 2", - "toolbar.button.heading.3": "Titel 3", + "toolbar.button.headings": "Kopteksten", + "toolbar.button.heading.1": "Koptekst 1", + "toolbar.button.heading.2": "Koptekst 2", + "toolbar.button.heading.3": "Koptekst 3", "toolbar.button.italic": "Cursieve tekst", "toolbar.button.file": "Bestand", "toolbar.button.file.select": "Selecteer een bestand", @@ -419,6 +505,7 @@ "view.account": "Jouw account", "view.installation": "Installatie", + "view.resetPassword": "Wachtwoord herstellen", "view.settings": "Opties", "view.site": "Site", "view.users": "Gebruikers", diff --git a/kirby/i18n/translations/pl.json b/kirby/i18n/translations/pl.json index 440ac92..bf72b03 100755 --- a/kirby/i18n/translations/pl.json +++ b/kirby/i18n/translations/pl.json @@ -6,6 +6,8 @@ "change": "Zmie\u0144", "close": "Zamknij", "confirm": "Ok", + "collapse": "Collapse", + "collapse.all": "Collapse All", "copy": "Kopiuj", "create": "Utwórz", @@ -22,12 +24,15 @@ "days.wed": "\u015ar", "delete": "Usu\u0144", + "delete.all": "Delete all", "dimensions": "Wymiary", "disabled": "Wyłączone", "discard": "Odrzu\u0107", "download": "Pobierz", "duplicate": "Zduplikuj", "edit": "Edytuj", + "expand": "Expand", + "expand.all": "Expand All", "dialog.files.empty": "Brak plików do wyboru", "dialog.pages.empty": "Brak stron do wyboru", @@ -36,6 +41,7 @@ "email": "Email", "email.placeholder": "mail@example.com", + "error.access.code": "Invalid code", "error.access.login": "Nieprawidłowy login", "error.access.panel": "Nie masz uprawnień by dostać się do panelu", "error.access.view": "Nie masz uprawnień, by dostać się do tej części panelu", @@ -47,6 +53,12 @@ "error.blueprint.notFound": "Nie udało się załadować wzorca \"{name}\"", + "error.blocks.max.plural": "You must not add more than {max} blocks", + "error.blocks.max.singular": "You must not add more than one block", + "error.blocks.min.plural": "You must add at least {min} blocks", + "error.blocks.min.singular": "You must add at least one block", + "error.blocks.validation": "There's an error in block {index}", + "error.email.preset.notFound": "Nie udało się załadować wzorca wiadomości e-mail \"{name}\"", "error.field.converter.invalid": "Nieprawidłowy konwerter \"{converter}\"", @@ -185,22 +197,77 @@ "error.validation.size": "Rozmiar wartości musi wynosić \"{size}\"", "error.validation.startswith": "Wartość musi zaczynać się od \"{start}\"", "error.validation.time": "Wprowadź poprawny czas", + "error.validation.time.after": "Please enter a time after {time}", + "error.validation.time.before": "Please enter a time before {time}", + "error.validation.time.between": "Please enter a time between {min} and {max}", "error.validation.url": "Wprowadź poprawny adres URL", "field.required": "Pole jest wymagane", + "field.blocks.changeType": "Change type", + "field.blocks.code.name": "Kod", + "field.blocks.code.language": "Język", + "field.blocks.code.placeholder": "Your code …", + "field.blocks.delete.confirm": "Do you really want to delete this block?", + "field.blocks.delete.confirm.all": "Do you really want to delete all blocks?", + "field.blocks.delete.confirm.selected": "Do you really want to delete the selected blocks?", + "field.blocks.empty": "No blocks yet", + "field.blocks.fieldsets.label": "Please select a block type …", + "field.blocks.gallery.name": "Gallery", + "field.blocks.gallery.images.empty": "No images yet", + "field.blocks.gallery.images.label": "Images", + "field.blocks.heading.level": "Level", + "field.blocks.heading.name": "Heading", + "field.blocks.heading.text": "Text", + "field.blocks.heading.placeholder": "Heading …", + "field.blocks.image.alt": "Alternative text", + "field.blocks.image.caption": "Caption", + "field.blocks.image.crop": "Crop", + "field.blocks.image.link": "Link", + "field.blocks.image.location": "Location", + "field.blocks.image.name": "Obrazek", + "field.blocks.image.placeholder": "Select an image", + "field.blocks.image.ratio": "Ratio", + "field.blocks.list.name": "List", + "field.blocks.markdown.name": "Markdown", + "field.blocks.markdown.label": "Text", + "field.blocks.markdown.placeholder": "Markdown …", + "field.blocks.quote.name": "Quote", + "field.blocks.quote.text.label": "Text", + "field.blocks.quote.text.placeholder": "Quote …", + "field.blocks.quote.citation.label": "Citation", + "field.blocks.quote.citation.placeholder": "by …", + "field.blocks.text.name": "Text", + "field.blocks.text.placeholder": "Text …", + "field.blocks.video.caption": "Caption", + "field.blocks.video.name": "Video", + "field.blocks.video.placeholder": "Enter a video URL", + "field.blocks.video.url.label": "Video-URL", + "field.blocks.video.url.placeholder": "https://youtube.com/?v=", + "field.files.empty": "Nie wybrano jeszcze żadnych plików", + + "field.layout.delete": "Delete layout", + "field.layout.delete.confirm": "Do you really want to delete this layout?", + "field.layout.empty": "No rows yet", + "field.layout.select": "Select a layout", + "field.pages.empty": "Nie wybrano jeszcze żadnych stron", "field.structure.delete.confirm": "Czy na pewno chcesz usunąć ten wiersz?", "field.structure.empty": "Nie ma jeszcze \u017cadnych wpis\u00f3w.", "field.users.empty": "Nie wybrano jeszcze żadnych użytkowników", + "file.blueprint": "This file has no blueprint yet. You can define the setup in /site/blueprints/{template}.yml", "file.delete.confirm": "Czy na pewno chcesz usunąć
{filename}?", + "file.sort": "Change position", "files": "Pliki", "files.empty": "Nie ma jeszcze żadnych plików", + "hide": "Hide", "hour": "Godzina", "insert": "Wstaw", + "insert.after": "Insert after", + "insert.before": "Insert before", "install": "Zainstaluj", "installation": "Instalacja", @@ -259,7 +326,20 @@ "lock.isUnlocked": "Twoje niezapisane zmiany zostały nadpisane przez innego użytkownika. Możesz pobrać swoje zmiany, by scalić je ręcznie.", "login": "Zaloguj", + "login.code.label.login": "Login code", + "login.code.label.password-reset": "Password reset code", + "login.code.placeholder.email": "000 000", + "login.code.text.email": "If your email address is registered, the requested code was sent via email.", + "login.email.login.body": "Hi {user.nameOrEmail},\n\nYou recently requested a login code for the Kirby Panel.\nThe following login code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a login code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.", + "login.email.login.subject": "Your login code", + "login.email.password-reset.body": "Hi {user.nameOrEmail},\n\nYou recently requested a password reset code for the Kirby Panel.\nThe following password reset code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a password reset code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.", + "login.email.password-reset.subject": "Your password reset code", "login.remember": "Nie wylogowuj mnie", + "login.reset": "Reset password", + "login.toggleText.code.email": "Login via email", + "login.toggleText.code.email-password": "Login with password", + "login.toggleText.password-reset.email": "Forgot your password?", + "login.toggleText.password-reset.email-password": "← Back to login", "logout": "Wyloguj", @@ -296,6 +376,7 @@ "orientation.portrait": "Pionowa", "orientation.square": "Kwadrat", + "page.blueprint": "This page has no blueprint yet. You can define the setup in /site/blueprints/{template}.yml", "page.changeSlug": "Zmie\u0144 URL", "page.changeSlug.fromTitle": "Utw\u00f3rz na podstawie tytu\u0142u", "page.changeStatus": "Zmień status", @@ -309,6 +390,7 @@ "page.duplicate.appendix": "Kopiuj", "page.duplicate.files": "Kopiuj pliki", "page.duplicate.pages": "Kopiuj strony", + "page.sort": "Change position", "page.status": "Status", "page.status.draft": "Szkic", "page.status.draft.description": "Strona jest w trybie roboczym i widoczna tylko dla zalogowanych redaktorów lub pod sekretnym linkiem", @@ -328,6 +410,7 @@ "password": "Has\u0142o", "pixel": "Piksel", "prev": "Poprzednie", + "preview": "Preview", "remove": "Usuń", "rename": "Zmień nazwę", "replace": "Zamie\u0144", @@ -354,6 +437,7 @@ "select": "Wybierz", "settings": "Ustawienia", + "show": "Show", "size": "Rozmiar", "slug": "Końcówka URL", "sort": "Sortuj", @@ -361,6 +445,8 @@ "template": "Szablon", "today": "Dzisiaj", + "site.blueprint": "The site has no blueprint yet. You can define the setup in /site/blueprints/site.yml", + "toolbar.button.code": "Kod", "toolbar.button.bold": "Pogrubienie", "toolbar.button.email": "Email", @@ -419,6 +505,7 @@ "view.account": "Twoje konto", "view.installation": "Instalacja", + "view.resetPassword": "Reset password", "view.settings": "Ustawienia", "view.site": "Strona", "view.users": "U\u017cytkownicy", diff --git a/kirby/i18n/translations/pt_BR.json b/kirby/i18n/translations/pt_BR.json index 678f2cd..8ffd648 100755 --- a/kirby/i18n/translations/pt_BR.json +++ b/kirby/i18n/translations/pt_BR.json @@ -6,6 +6,8 @@ "change": "Alterar", "close": "Fechar", "confirm": "Salvar", + "collapse": "Collapse", + "collapse.all": "Collapse All", "copy": "Copiar", "create": "Criar", @@ -22,12 +24,15 @@ "days.wed": "Qua", "delete": "Excluir", + "delete.all": "Delete all", "dimensions": "Dimensões", "disabled": "Disabled", "discard": "Descartar", "download": "Download", "duplicate": "Duplicate", "edit": "Editar", + "expand": "Expand", + "expand.all": "Expand All", "dialog.files.empty": "No files to select", "dialog.pages.empty": "No pages to select", @@ -36,6 +41,7 @@ "email": "Email", "email.placeholder": "mail@exemplo.com", + "error.access.code": "Invalid code", "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", @@ -47,6 +53,12 @@ "error.blueprint.notFound": "O blueprint \"{name}\" não pôde ser carregado", + "error.blocks.max.plural": "You must not add more than {max} blocks", + "error.blocks.max.singular": "You must not add more than one block", + "error.blocks.min.plural": "You must add at least {min} blocks", + "error.blocks.min.singular": "You must add at least one block", + "error.blocks.validation": "There's an error in block {index}", + "error.email.preset.notFound": "Preset de email \"{name}\" não encontrado", "error.field.converter.invalid": "Conversor \"{converter}\" inválido", @@ -185,22 +197,77 @@ "error.validation.size": "O tamanho do valor deve ser \"{size}\"", "error.validation.startswith": "O valor deve começar com \"{start}\"", "error.validation.time": "Digite uma hora válida", + "error.validation.time.after": "Please enter a time after {time}", + "error.validation.time.before": "Please enter a time before {time}", + "error.validation.time.between": "Please enter a time between {min} and {max}", "error.validation.url": "Digite uma URL válida", "field.required": "The field is required", + "field.blocks.changeType": "Change type", + "field.blocks.code.name": "Código", + "field.blocks.code.language": "Idioma", + "field.blocks.code.placeholder": "Your code …", + "field.blocks.delete.confirm": "Do you really want to delete this block?", + "field.blocks.delete.confirm.all": "Do you really want to delete all blocks?", + "field.blocks.delete.confirm.selected": "Do you really want to delete the selected blocks?", + "field.blocks.empty": "No blocks yet", + "field.blocks.fieldsets.label": "Please select a block type …", + "field.blocks.gallery.name": "Gallery", + "field.blocks.gallery.images.empty": "No images yet", + "field.blocks.gallery.images.label": "Images", + "field.blocks.heading.level": "Level", + "field.blocks.heading.name": "Heading", + "field.blocks.heading.text": "Text", + "field.blocks.heading.placeholder": "Heading …", + "field.blocks.image.alt": "Alternative text", + "field.blocks.image.caption": "Caption", + "field.blocks.image.crop": "Crop", + "field.blocks.image.link": "Link", + "field.blocks.image.location": "Location", + "field.blocks.image.name": "Imagem", + "field.blocks.image.placeholder": "Select an image", + "field.blocks.image.ratio": "Ratio", + "field.blocks.list.name": "List", + "field.blocks.markdown.name": "Markdown", + "field.blocks.markdown.label": "Text", + "field.blocks.markdown.placeholder": "Markdown …", + "field.blocks.quote.name": "Quote", + "field.blocks.quote.text.label": "Text", + "field.blocks.quote.text.placeholder": "Quote …", + "field.blocks.quote.citation.label": "Citation", + "field.blocks.quote.citation.placeholder": "by …", + "field.blocks.text.name": "Text", + "field.blocks.text.placeholder": "Text …", + "field.blocks.video.caption": "Caption", + "field.blocks.video.name": "Video", + "field.blocks.video.placeholder": "Enter a video URL", + "field.blocks.video.url.label": "Video-URL", + "field.blocks.video.url.placeholder": "https://youtube.com/?v=", + "field.files.empty": "Nenhum arquivo selecionado", + + "field.layout.delete": "Delete layout", + "field.layout.delete.confirm": "Do you really want to delete this layout?", + "field.layout.empty": "No rows yet", + "field.layout.select": "Select a layout", + "field.pages.empty": "Nenhuma página selecionada", "field.structure.delete.confirm": "Deseja realmente excluir este registro?", "field.structure.empty": "Nenhum registro", "field.users.empty": "Nenhum usuário selecionado", + "file.blueprint": "This file has no blueprint yet. You can define the setup in /site/blueprints/{template}.yml", "file.delete.confirm": "Deseja realmente excluir
{filename}?", + "file.sort": "Change position", "files": "Arquivos", "files.empty": "Nenhum arquivo", + "hide": "Hide", "hour": "Hora", "insert": "Inserir", + "insert.after": "Insert after", + "insert.before": "Insert before", "install": "Instalar", "installation": "Instalação", @@ -259,7 +326,20 @@ "lock.isUnlocked": "Your unsaved changes have been overwritten by another user. You can download your changes to merge them manually.", "login": "Entrar", + "login.code.label.login": "Login code", + "login.code.label.password-reset": "Password reset code", + "login.code.placeholder.email": "000 000", + "login.code.text.email": "If your email address is registered, the requested code was sent via email.", + "login.email.login.body": "Hi {user.nameOrEmail},\n\nYou recently requested a login code for the Kirby Panel.\nThe following login code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a login code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.", + "login.email.login.subject": "Your login code", + "login.email.password-reset.body": "Hi {user.nameOrEmail},\n\nYou recently requested a password reset code for the Kirby Panel.\nThe following password reset code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a password reset code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.", + "login.email.password-reset.subject": "Your password reset code", "login.remember": "Manter-me conectado", + "login.reset": "Reset password", + "login.toggleText.code.email": "Login via email", + "login.toggleText.code.email-password": "Login with password", + "login.toggleText.password-reset.email": "Forgot your password?", + "login.toggleText.password-reset.email-password": "← Back to login", "logout": "Sair", @@ -296,6 +376,7 @@ "orientation.portrait": "Retrato", "orientation.square": "Quadrado", + "page.blueprint": "This page has no blueprint yet. You can define the setup in /site/blueprints/{template}.yml", "page.changeSlug": "Alterar URL", "page.changeSlug.fromTitle": "Criar a partir do t\u00edtulo", "page.changeStatus": "Alterar estado", @@ -309,6 +390,7 @@ "page.duplicate.appendix": "Copiar", "page.duplicate.files": "Copy files", "page.duplicate.pages": "Copy pages", + "page.sort": "Change position", "page.status": "Estado", "page.status.draft": "Rascunho", "page.status.draft.description": "The page is in draft mode and only visible for logged in editors or via secret link", @@ -328,6 +410,7 @@ "password": "Senha", "pixel": "Pixel", "prev": "Anterior", + "preview": "Preview", "remove": "Remover", "rename": "Renomear", "replace": "Substituir", @@ -354,6 +437,7 @@ "select": "Selecionar", "settings": "Configurações", + "show": "Show", "size": "Tamanho", "slug": "URL", "sort": "Ordenar", @@ -361,6 +445,8 @@ "template": "Tema", "today": "Hoje", + "site.blueprint": "The site has no blueprint yet. You can define the setup in /site/blueprints/site.yml", + "toolbar.button.code": "Código", "toolbar.button.bold": "Negrito", "toolbar.button.email": "Email", @@ -419,6 +505,7 @@ "view.account": "Sua conta", "view.installation": "Instala\u00e7\u00e3o", + "view.resetPassword": "Reset password", "view.settings": "Configurações", "view.site": "Site", "view.users": "Usu\u00e1rios", diff --git a/kirby/i18n/translations/pt_PT.json b/kirby/i18n/translations/pt_PT.json index a39ee59..26aa2bc 100755 --- a/kirby/i18n/translations/pt_PT.json +++ b/kirby/i18n/translations/pt_PT.json @@ -6,6 +6,8 @@ "change": "Alterar", "close": "Fechar", "confirm": "Salvar", + "collapse": "Collapse", + "collapse.all": "Collapse All", "copy": "Copiar", "create": "Criar", @@ -22,12 +24,15 @@ "days.wed": "Qua", "delete": "Excluir", + "delete.all": "Delete all", "dimensions": "Dimensões", "disabled": "Inativo", "discard": "Descartar", "download": "Descarregar", "duplicate": "Duplicar", "edit": "Editar", + "expand": "Expand", + "expand.all": "Expand All", "dialog.files.empty": "Sem arquivos para selecionar", "dialog.pages.empty": "Sem páginas para selecionar", @@ -36,6 +41,7 @@ "email": "Email", "email.placeholder": "mail@exemplo.pt", + "error.access.code": "Invalid code", "error.access.login": "Login inválido", "error.access.panel": "Não tem permissões para aceder ao painel", "error.access.view": "Não tem permissões para aceder a esta área do Painel", @@ -47,6 +53,12 @@ "error.blueprint.notFound": "O blueprint \"{name}\" não pode ser carregado", + "error.blocks.max.plural": "You must not add more than {max} blocks", + "error.blocks.max.singular": "You must not add more than one block", + "error.blocks.min.plural": "You must add at least {min} blocks", + "error.blocks.min.singular": "You must add at least one block", + "error.blocks.validation": "There's an error in block {index}", + "error.email.preset.notFound": "Preset de email \"{name}\" não encontrado", "error.field.converter.invalid": "Conversor \"{converter}\" inválido", @@ -102,7 +114,7 @@ "error.page.notFound": "Página\"{slug}\" não encontrada", "error.page.num.invalid": "Digite um número de ordenação válido. Este número não pode ser negativo.", "error.page.slug.invalid": "Por favor, digite um prefixo de URL válido", - "error.page.slug.maxlength": "Slug length must be less than \"{length}\" characters", + "error.page.slug.maxlength": "O slug não pode conter mais do que \"{length}\" caracteres", "error.page.sort.permission": "A página \"{slug}\" não pode ser ordenada", "error.page.status.invalid": "Por favor, defina um estado de página válido", "error.page.undefined": "P\u00e1gina n\u00e3o encontrada", @@ -185,22 +197,77 @@ "error.validation.size": "O tamanho do valor deve ser \"{size}\"", "error.validation.startswith": "O valor deve começar com \"{start}\"", "error.validation.time": "Digite uma hora válida", + "error.validation.time.after": "Please enter a time after {time}", + "error.validation.time.before": "Please enter a time before {time}", + "error.validation.time.between": "Please enter a time between {min} and {max}", "error.validation.url": "Digite uma URL válida", "field.required": "Este campo é necessário", + "field.blocks.changeType": "Change type", + "field.blocks.code.name": "Código", + "field.blocks.code.language": "Idioma", + "field.blocks.code.placeholder": "Your code …", + "field.blocks.delete.confirm": "Do you really want to delete this block?", + "field.blocks.delete.confirm.all": "Do you really want to delete all blocks?", + "field.blocks.delete.confirm.selected": "Do you really want to delete the selected blocks?", + "field.blocks.empty": "No blocks yet", + "field.blocks.fieldsets.label": "Please select a block type …", + "field.blocks.gallery.name": "Gallery", + "field.blocks.gallery.images.empty": "No images yet", + "field.blocks.gallery.images.label": "Images", + "field.blocks.heading.level": "Level", + "field.blocks.heading.name": "Heading", + "field.blocks.heading.text": "Text", + "field.blocks.heading.placeholder": "Heading …", + "field.blocks.image.alt": "Alternative text", + "field.blocks.image.caption": "Caption", + "field.blocks.image.crop": "Crop", + "field.blocks.image.link": "Link", + "field.blocks.image.location": "Location", + "field.blocks.image.name": "Imagem", + "field.blocks.image.placeholder": "Select an image", + "field.blocks.image.ratio": "Ratio", + "field.blocks.list.name": "List", + "field.blocks.markdown.name": "Markdown", + "field.blocks.markdown.label": "Text", + "field.blocks.markdown.placeholder": "Markdown …", + "field.blocks.quote.name": "Quote", + "field.blocks.quote.text.label": "Text", + "field.blocks.quote.text.placeholder": "Quote …", + "field.blocks.quote.citation.label": "Citation", + "field.blocks.quote.citation.placeholder": "by …", + "field.blocks.text.name": "Text", + "field.blocks.text.placeholder": "Text …", + "field.blocks.video.caption": "Caption", + "field.blocks.video.name": "Video", + "field.blocks.video.placeholder": "Enter a video URL", + "field.blocks.video.url.label": "Video-URL", + "field.blocks.video.url.placeholder": "https://youtube.com/?v=", + "field.files.empty": "Nenhum arquivo selecionado", + + "field.layout.delete": "Delete layout", + "field.layout.delete.confirm": "Do you really want to delete this layout?", + "field.layout.empty": "No rows yet", + "field.layout.select": "Select a layout", + "field.pages.empty": "Nenhuma página selecionada", "field.structure.delete.confirm": "Deseja realmente excluir este registro?", "field.structure.empty": "Nenhum registro", "field.users.empty": "Nenhum utilizador selecionado", + "file.blueprint": "This file has no blueprint yet. You can define the setup in /site/blueprints/{template}.yml", "file.delete.confirm": "Deseja realmente excluir
{filename}?", + "file.sort": "Change position", "files": "Arquivos", "files.empty": "Nenhum arquivo", + "hide": "Hide", "hour": "Hora", "insert": "Inserir", + "insert.after": "Insert after", + "insert.before": "Insert before", "install": "Instalar", "installation": "Instalação", @@ -259,7 +326,20 @@ "lock.isUnlocked": "As suas alterações foram sobrepostas por outro utilizador. Pode descarregar as suas alterações e combiná-las manualmente.", "login": "Entrar", + "login.code.label.login": "Login code", + "login.code.label.password-reset": "Password reset code", + "login.code.placeholder.email": "000 000", + "login.code.text.email": "If your email address is registered, the requested code was sent via email.", + "login.email.login.body": "Hi {user.nameOrEmail},\n\nYou recently requested a login code for the Kirby Panel.\nThe following login code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a login code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.", + "login.email.login.subject": "Your login code", + "login.email.password-reset.body": "Hi {user.nameOrEmail},\n\nYou recently requested a password reset code for the Kirby Panel.\nThe following password reset code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a password reset code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.", + "login.email.password-reset.subject": "Your password reset code", "login.remember": "Manter-me conectado", + "login.reset": "Reset password", + "login.toggleText.code.email": "Login via email", + "login.toggleText.code.email-password": "Login with password", + "login.toggleText.password-reset.email": "Forgot your password?", + "login.toggleText.password-reset.email-password": "← Back to login", "logout": "Sair", @@ -289,13 +369,14 @@ "on": "on", "open": "Abrir", "options": "Opções", - "options.none": "No options", + "options.none": "Sem opções", "orientation": "Orientação", "orientation.landscape": "Paisagem", "orientation.portrait": "Retrato", "orientation.square": "Quadrado", + "page.blueprint": "This page has no blueprint yet. You can define the setup in /site/blueprints/{template}.yml", "page.changeSlug": "Alterar URL", "page.changeSlug.fromTitle": "Criar a partir do t\u00edtulo", "page.changeStatus": "Alterar estado", @@ -309,6 +390,7 @@ "page.duplicate.appendix": "Copiar", "page.duplicate.files": "Copiar arquivos", "page.duplicate.pages": "Copiar páginas", + "page.sort": "Change position", "page.status": "Estado", "page.status.draft": "Rascunho", "page.status.draft.description": "A página está em modo de rascunho e é visível somente para editores", @@ -328,6 +410,7 @@ "password": "Palavra-passe", "pixel": "Pixel", "prev": "Anterior", + "preview": "Preview", "remove": "Remover", "rename": "Renomear", "replace": "Substituir", @@ -346,14 +429,15 @@ "save": "Salvar", "search": "Buscar", - "search.min": "Enter {min} characters to search", - "search.all": "Show all", - "search.results.none": "No results", + "search.min": "Introduza {min} caracteres para pesquisar", + "search.all": "Mostrar todos", + "search.results.none": "Sem resultados", "section.required": "Esta seção é necessária", "select": "Selecionar", "settings": "Configurações", + "show": "Show", "size": "Tamanho", "slug": "URL", "sort": "Ordenar", @@ -361,6 +445,8 @@ "template": "Tema", "today": "Hoje", + "site.blueprint": "The site has no blueprint yet. You can define the setup in /site/blueprints/site.yml", + "toolbar.button.code": "Código", "toolbar.button.bold": "Negrito", "toolbar.button.email": "Email", @@ -419,6 +505,7 @@ "view.account": "A sua conta", "view.installation": "Instala\u00e7\u00e3o", + "view.resetPassword": "Reset password", "view.settings": "Configurações", "view.site": "Site", "view.users": "Utilizadores", diff --git a/kirby/i18n/translations/ru.json b/kirby/i18n/translations/ru.json index 187901d..ce320d0 100755 --- a/kirby/i18n/translations/ru.json +++ b/kirby/i18n/translations/ru.json @@ -6,6 +6,8 @@ "change": "\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c", "close": "\u0417\u0430\u043a\u0440\u044b\u0442\u044c", "confirm": "Ок", + "collapse": "Свернуть", + "collapse.all": "Свернуть все", "copy": "Скопировать", "create": "Создать", @@ -22,12 +24,15 @@ "days.wed": "\u0421\u0440", "delete": "\u0423\u0434\u0430\u043b\u0438\u0442\u044c", + "delete.all": "Удалить все", "dimensions": "Размеры", "disabled": "Отключено", "discard": "\u0421\u0431\u0440\u043e\u0441", "download": "Скачать", "duplicate": "Дублировать", "edit": "\u041d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c", + "expand": "Развернуть", + "expand.all": "Развернуть все", "dialog.files.empty": "Нет файлов для выбора", "dialog.pages.empty": "Нет страниц для выбора", @@ -36,6 +41,7 @@ "email": "Эл. почта", "email.placeholder": "mail@example.com", + "error.access.code": "Неверный код", "error.access.login": "Неправильный логин", "error.access.panel": "У вас нет права доступа к панели", "error.access.view": "У вас нет прав доступа к этой части панели", @@ -47,6 +53,12 @@ "error.blueprint.notFound": "Не удалось загрузить blueprint \"{name}\"", + "error.blocks.max.plural": "Вы не можете добавить больше {max} блоков", + "error.blocks.max.singular": "Вы не можете добавить больше одного блока", + "error.blocks.min.plural": "Вы должны добавить хотя бы {min} блоков", + "error.blocks.min.singular": "Вы должны добавить хотя бы один блок", + "error.blocks.validation": "Обнаружена ошибка в блоке {index}", + "error.email.preset.notFound": "Шаблон эл. почты \"{name}\" не найден", "error.field.converter.invalid": "Неверный конвертер \"{converter}\"", @@ -102,7 +114,7 @@ "error.page.notFound": "\u0421\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u0430", "error.page.num.invalid": "Пожалуйста, впишите правильное число сортировки. Число не может быть отрицательным.", "error.page.slug.invalid": "Пожалуйста, впишите правильный префикс URL", - "error.page.slug.maxlength": "Slug length must be less than \"{length}\" characters", + "error.page.slug.maxlength": "Длина ссылки (ЧПУ) должна быть короче \"{length}\" символов", "error.page.sort.permission": "Невозможно сортировать страницу \"{slug}\"", "error.page.status.invalid": "Пожалуйста, установите верный статус страницы", "error.page.undefined": "\u0421\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u0430", @@ -185,22 +197,77 @@ "error.validation.size": "Значение размера должно быть \"{size}\"", "error.validation.startswith": "Значение должно начинаться с \"{start}\"", "error.validation.time": "Пожалуйста, введите правильную дату", + "error.validation.time.after": "Пожалуйста, укажите время после {time}", + "error.validation.time.before": "Пожалуйста, укажите время до {time}", + "error.validation.time.between": "Пожалуйста, укажите время между {min} и {max}", "error.validation.url": "Пожалуйста, введите правильный URL", "field.required": "Поле обязательно", + "field.blocks.changeType": "Изменить тип", + "field.blocks.code.name": "Код", + "field.blocks.code.language": "Язык", + "field.blocks.code.placeholder": "Ваш код …", + "field.blocks.delete.confirm": "Вы действительно хотите удалить этот блок?", + "field.blocks.delete.confirm.all": "Вы действительно хотите удалить все блоки?", + "field.blocks.delete.confirm.selected": "Вы действительно хотите удалить эти блоки?", + "field.blocks.empty": "Еще нет блоков", + "field.blocks.fieldsets.label": "Пожалуйста, выберите тип блока…", + "field.blocks.gallery.name": "Галерея", + "field.blocks.gallery.images.empty": "Еще нет изображений", + "field.blocks.gallery.images.label": "Изображения", + "field.blocks.heading.level": "Уровень", + "field.blocks.heading.name": "Заголовок", + "field.blocks.heading.text": "Текст", + "field.blocks.heading.placeholder": "Заголовок …", + "field.blocks.image.alt": "Альтернативный текст", + "field.blocks.image.caption": "Подпись", + "field.blocks.image.crop": "Обрезать", + "field.blocks.image.link": "Ссылка", + "field.blocks.image.location": "Расположение", + "field.blocks.image.name": "Картинка", + "field.blocks.image.placeholder": "Выберите изображение", + "field.blocks.image.ratio": "Соотношение", + "field.blocks.list.name": "Список", + "field.blocks.markdown.name": "Markdown", + "field.blocks.markdown.label": "Текст", + "field.blocks.markdown.placeholder": "Markdown …", + "field.blocks.quote.name": "Цитата", + "field.blocks.quote.text.label": "Текст", + "field.blocks.quote.text.placeholder": "Цитата …", + "field.blocks.quote.citation.label": "Цитирование", + "field.blocks.quote.citation.placeholder": "Автор …", + "field.blocks.text.name": "Текст", + "field.blocks.text.placeholder": "Текст …", + "field.blocks.video.caption": "Подпись", + "field.blocks.video.name": "Видео", + "field.blocks.video.placeholder": "Введите ссылку на видео", + "field.blocks.video.url.label": "Ссылка на видео", + "field.blocks.video.url.placeholder": "https://youtube.com/?v=", + "field.files.empty": "Еще не выбраны файлы", + + "field.layout.delete": "Удалить разметку", + "field.layout.delete.confirm": "Вы действительно хотите удалить эту разметку?", + "field.layout.empty": "Еще нет строк", + "field.layout.select": "Выберите разметку", + "field.pages.empty": "Еще не выбраны страницы", "field.structure.delete.confirm": "Вы точно хотите удалить эту запись?", "field.structure.empty": "Еще нет записей", "field.users.empty": "Еще нет пользователей", + "file.blueprint": "Вы можете определить новые секции и поля формы для этого файла в /site/blueprints/{template}.yml", "file.delete.confirm": "Вы точно хотите удалить файл
{filename}?", + "file.sort": "Изменить позицию", "files": "Файлы", "files.empty": "Еще нет файлов", + "hide": "Скрыть", "hour": "Час", "insert": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c", + "insert.after": "Вставить ниже", + "insert.before": "Вставить выше", "install": "Установить", "installation": "Установка", @@ -259,7 +326,20 @@ "lock.isUnlocked": "Ваши несохраненные изменения были перезаписаны другим пользователем. Вы можете загрузить ваши изменения и объединить их вручную.", "login": "Войти", + "login.code.label.login": "Код для входа", + "login.code.label.password-reset": "Код для сброса пароля", + "login.code.placeholder.email": "000 000", + "login.code.text.email": "Если ваш Email уже зарегистрирован, запрашиваемый код был отправлен на него.", + "login.email.login.body": "Добрый день, {user.nameOrEmail}.\n\nНедавно вы запросили код для авторизации в Kirby Panel.\nЭтот код будет доступен {timeout} минут:\n\n{code}\n\nЕсли вы не запрашивали код для авторизации, пожалуйста, проигнорируйте это письмо или свяжитесь с вашим администратором, если у вас возникли вопросы.\nТакже исходя из соображений безопасности просим вас НЕ ПЕРЕСЫЛАТЬ это письмо.", + "login.email.login.subject": "Ваш код для входа", + "login.email.password-reset.body": "Добрый день, {user.nameOrEmail}.\n\nНедавно вы запросили код для сброса пароля в Kirby Panel.\nЭтот код будет доступен {timeout} минут:\n\n{code}\n\nЕсли вы не запрашивали код для сброса пароля, пожалуйста, проигнорируйте это письмо или свяжитесь с вашим администратором, если у вас возникли вопросы.\nТакже исходя из соображений безопасности просим вас НЕ ПЕРЕСЫЛАТЬ это письмо.", + "login.email.password-reset.subject": "Ваш код для сброса пароля", "login.remember": "Сохранять вход активным", + "login.reset": "Сбросить пароль", + "login.toggleText.code.email": "Вход с помощью Email", + "login.toggleText.code.email-password": "Вход с паролем", + "login.toggleText.password-reset.email": "Забыли ваш пароль?", + "login.toggleText.password-reset.email-password": "← Вернуться к форме входа", "logout": "Выйти", @@ -289,13 +369,14 @@ "on": "включено", "open": "Открыть", "options": "Опции", - "options.none": "No options", + "options.none": "Нет параметров", "orientation": "Ориентация", "orientation.landscape": "Горизонтальная", "orientation.portrait": "Портретная", "orientation.square": "Квадрат", + "page.blueprint": "Вы можете определить новые секции и поля формы для этой страницы в /site/blueprints/{template}.yml", "page.changeSlug": "\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443 (\u0427\u041f\u0423)", "page.changeSlug.fromTitle": "Создать из названия", "page.changeStatus": "Изменить статус", @@ -309,6 +390,7 @@ "page.duplicate.appendix": "Скопировать", "page.duplicate.files": "Копировать файлы", "page.duplicate.pages": "Копировать страницы", + "page.sort": "Изменить позицию", "page.status": "Статус", "page.status.draft": "Черновик", "page.status.draft.description": "Страница находится в черновом режиме и видна только зарегистрированным пользователям или по секретной ссылке", @@ -328,6 +410,7 @@ "password": "\u041f\u0430\u0440\u043e\u043b\u044c", "pixel": "Пиксель", "prev": "Предыдущий", + "preview": "Предпросмотр", "remove": "Удалить", "rename": "Переназвать", "replace": "\u0417\u0430\u043c\u0435\u043d\u0438\u0442\u044c", @@ -346,14 +429,15 @@ "save": "\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c", "search": "Поиск", - "search.min": "Enter {min} characters to search", - "search.all": "Show all", - "search.results.none": "No results", + "search.min": "Введите хотя бы {min} символов для поиска", + "search.all": "Показать все", + "search.results.none": "Нет результатов", "section.required": "Секция обязательна", "select": "Выбрать", "settings": "Настройка", + "show": "Показать", "size": "Размер", "slug": "Понятная ссылка (ЧПУ)", "sort": "Сортировать", @@ -361,6 +445,8 @@ "template": "\u0428\u0430\u0431\u043b\u043e\u043d", "today": "Сегодня", + "site.blueprint": "Вы можете определить новые секции и поля формы для этого сайта в /site/blueprints/site.yml", + "toolbar.button.code": "Код", "toolbar.button.bold": "\u0416\u0438\u0440\u043d\u044b\u0439 \u0448\u0440\u0438\u0444\u0442", "toolbar.button.email": "Эл. почта", @@ -419,6 +505,7 @@ "view.account": "\u0412\u0430\u0448 \u0430\u043a\u043a\u0430\u0443\u043d\u0442", "view.installation": "\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430", + "view.resetPassword": "Сбросить пароль", "view.settings": "Настройка", "view.site": "Сайт", "view.users": "\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438", diff --git a/kirby/i18n/translations/sk.json b/kirby/i18n/translations/sk.json index 71d0e21..92c4f32 100755 --- a/kirby/i18n/translations/sk.json +++ b/kirby/i18n/translations/sk.json @@ -6,6 +6,8 @@ "change": "Zmeniť", "close": "Zavrieť", "confirm": "Ok", + "collapse": "Collapse", + "collapse.all": "Collapse All", "copy": "Kopírovať", "create": "Vytvoriť", @@ -22,12 +24,15 @@ "days.wed": "Str", "delete": "Zmazať", + "delete.all": "Delete all", "dimensions": "Rozmery", "disabled": "Disabled", "discard": "Zahodiť", "download": "Download", "duplicate": "Duplicate", "edit": "Upraviť", + "expand": "Expand", + "expand.all": "Expand All", "dialog.files.empty": "No files to select", "dialog.pages.empty": "No pages to select", @@ -36,6 +41,7 @@ "email": "E-mail", "email.placeholder": "mail@example.com", + "error.access.code": "Invalid code", "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", @@ -47,6 +53,12 @@ "error.blueprint.notFound": "Blueprint \"{name}\" sa nepodarilo načítať", + "error.blocks.max.plural": "You must not add more than {max} blocks", + "error.blocks.max.singular": "You must not add more than one block", + "error.blocks.min.plural": "You must add at least {min} blocks", + "error.blocks.min.singular": "You must add at least one block", + "error.blocks.validation": "There's an error in block {index}", + "error.email.preset.notFound": "E-mailovú predvoľbu \"{name}\" nie je možné nájsť", "error.field.converter.invalid": "Neplatný converter \"{converter}\"", @@ -185,22 +197,77 @@ "error.validation.size": "Veľkosť hodnoty musí byť \"{size}\"", "error.validation.startswith": "Hodnota musí začínať s \"{start}\"", "error.validation.time": "Prosím, zadajte platný čas", + "error.validation.time.after": "Please enter a time after {time}", + "error.validation.time.before": "Please enter a time before {time}", + "error.validation.time.between": "Please enter a time between {min} and {max}", "error.validation.url": "Prosím, zadajte platnú URL", "field.required": "The field is required", + "field.blocks.changeType": "Change type", + "field.blocks.code.name": "Kód", + "field.blocks.code.language": "Jazyk", + "field.blocks.code.placeholder": "Your code …", + "field.blocks.delete.confirm": "Do you really want to delete this block?", + "field.blocks.delete.confirm.all": "Do you really want to delete all blocks?", + "field.blocks.delete.confirm.selected": "Do you really want to delete the selected blocks?", + "field.blocks.empty": "No blocks yet", + "field.blocks.fieldsets.label": "Please select a block type …", + "field.blocks.gallery.name": "Gallery", + "field.blocks.gallery.images.empty": "No images yet", + "field.blocks.gallery.images.label": "Images", + "field.blocks.heading.level": "Level", + "field.blocks.heading.name": "Heading", + "field.blocks.heading.text": "Text", + "field.blocks.heading.placeholder": "Heading …", + "field.blocks.image.alt": "Alternative text", + "field.blocks.image.caption": "Caption", + "field.blocks.image.crop": "Crop", + "field.blocks.image.link": "Odkaz", + "field.blocks.image.location": "Location", + "field.blocks.image.name": "Obrázok", + "field.blocks.image.placeholder": "Select an image", + "field.blocks.image.ratio": "Ratio", + "field.blocks.list.name": "List", + "field.blocks.markdown.name": "Markdown", + "field.blocks.markdown.label": "Text", + "field.blocks.markdown.placeholder": "Markdown …", + "field.blocks.quote.name": "Quote", + "field.blocks.quote.text.label": "Text", + "field.blocks.quote.text.placeholder": "Quote …", + "field.blocks.quote.citation.label": "Citation", + "field.blocks.quote.citation.placeholder": "by …", + "field.blocks.text.name": "Text", + "field.blocks.text.placeholder": "Text …", + "field.blocks.video.caption": "Caption", + "field.blocks.video.name": "Video", + "field.blocks.video.placeholder": "Enter a video URL", + "field.blocks.video.url.label": "Video-URL", + "field.blocks.video.url.placeholder": "https://youtube.com/?v=", + "field.files.empty": "Žiadne súbory zatiaľ neboli zvolené", + + "field.layout.delete": "Delete layout", + "field.layout.delete.confirm": "Do you really want to delete this layout?", + "field.layout.empty": "No rows yet", + "field.layout.select": "Select a layout", + "field.pages.empty": "Žiadne stránky zatiaľ neboli zvolené", "field.structure.delete.confirm": "Ste si istý, že chcete zmazať tento riadok?", "field.structure.empty": "Zatiaľ žiadne údaje", "field.users.empty": "Žiadni užívatelia zatiaľ neboli zvolení", + "file.blueprint": "This file has no blueprint yet. You can define the setup in /site/blueprints/{template}.yml", "file.delete.confirm": "Ste si istý, že chcete zmazať
{filename}?", + "file.sort": "Change position", "files": "Súbory", "files.empty": "Zatiaľ žiadne súbory", + "hide": "Hide", "hour": "Hodina", "insert": "Vložiť", + "insert.after": "Insert after", + "insert.before": "Insert before", "install": "Inštalovať", "installation": "Inštalácia", @@ -259,7 +326,20 @@ "lock.isUnlocked": "Your unsaved changes have been overwritten by another user. You can download your changes to merge them manually.", "login": "Prihlásenie", + "login.code.label.login": "Login code", + "login.code.label.password-reset": "Password reset code", + "login.code.placeholder.email": "000 000", + "login.code.text.email": "If your email address is registered, the requested code was sent via email.", + "login.email.login.body": "Hi {user.nameOrEmail},\n\nYou recently requested a login code for the Kirby Panel.\nThe following login code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a login code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.", + "login.email.login.subject": "Your login code", + "login.email.password-reset.body": "Hi {user.nameOrEmail},\n\nYou recently requested a password reset code for the Kirby Panel.\nThe following password reset code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a password reset code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.", + "login.email.password-reset.subject": "Your password reset code", "login.remember": "Ponechať ma prihláseného", + "login.reset": "Reset password", + "login.toggleText.code.email": "Login via email", + "login.toggleText.code.email-password": "Login with password", + "login.toggleText.password-reset.email": "Forgot your password?", + "login.toggleText.password-reset.email-password": "← Back to login", "logout": "Odhlásenie", @@ -296,6 +376,7 @@ "orientation.portrait": "Portrét", "orientation.square": "Štvorec", + "page.blueprint": "This page has no blueprint yet. You can define the setup in /site/blueprints/{template}.yml", "page.changeSlug": "Zmeniť URL", "page.changeSlug.fromTitle": "Vytvoriť z titulku", "page.changeStatus": "Zmeniť status", @@ -309,6 +390,7 @@ "page.duplicate.appendix": "Kopírovať", "page.duplicate.files": "Copy files", "page.duplicate.pages": "Copy pages", + "page.sort": "Change position", "page.status": "Status", "page.status.draft": "Koncept", "page.status.draft.description": "The page is in draft mode and only visible for logged in editors or via secret link", @@ -328,6 +410,7 @@ "password": "Heslo", "pixel": "Pixel", "prev": "Predchádzajúci", + "preview": "Preview", "remove": "Odstrániť", "rename": "Premenovať", "replace": "Nahradiť", @@ -354,6 +437,7 @@ "select": "Zvoliť", "settings": "Nastavenia", + "show": "Show", "size": "Veľkosť", "slug": "URL appendix", "sort": "Zoradiť", @@ -361,6 +445,8 @@ "template": "Šablóna", "today": "Dnes", + "site.blueprint": "The site has no blueprint yet. You can define the setup in /site/blueprints/site.yml", + "toolbar.button.code": "Kód", "toolbar.button.bold": "Tučný", "toolbar.button.email": "E-mail", @@ -419,6 +505,7 @@ "view.account": "Váš účet", "view.installation": "Inštalácia", + "view.resetPassword": "Reset password", "view.settings": "Nastavenia", "view.site": "Portál", "view.users": "Užívatelia", diff --git a/kirby/i18n/translations/sv_SE.json b/kirby/i18n/translations/sv_SE.json index 99bf937..853ce9a 100755 --- a/kirby/i18n/translations/sv_SE.json +++ b/kirby/i18n/translations/sv_SE.json @@ -6,6 +6,8 @@ "change": "\u00c4ndra", "close": "St\u00e4ng", "confirm": "Spara", + "collapse": "Kollapsa", + "collapse.all": "Kollapsa alla", "copy": "Kopiera", "create": "Skapa", @@ -22,20 +24,24 @@ "days.wed": "Ons", "delete": "Radera", + "delete.all": "Radera allt", "dimensions": "Dimensioner", "disabled": "Inaktiverad", "discard": "Kassera", "download": "Ladda ner", "duplicate": "Duplicera", "edit": "Redigera", + "expand": "Expandera", + "expand.all": "Expandera alla", "dialog.files.empty": "Inga filer att välja", "dialog.pages.empty": "Inga sidor att välja", "dialog.users.empty": "Inga användare att välja", - "email": "E-post", + "email": "E-postadress", "email.placeholder": "namn@exempel.se", + "error.access.code": "Ogiltig kod", "error.access.login": "Ogiltig inloggning", "error.access.panel": "Du saknar behörighet att nå panelen", "error.access.view": "Du saknar behörighet att nå denna del av panelen", @@ -47,6 +53,12 @@ "error.blueprint.notFound": "Blueprint \"{name}\" kunde inte laddas", + "error.blocks.max.plural": "Du får inte lägga till mer än {max} block", + "error.blocks.max.singular": "Du får inte lägga till mer än ett block", + "error.blocks.min.plural": "Du måste lägga till minst {min} block", + "error.blocks.min.singular": "Du måste lägga till minst ett block", + "error.blocks.validation": "Det finns ett fel i block {index}", + "error.email.preset.notFound": "E-postförinställningen \"{name}\" kan inte hittas", "error.field.converter.invalid": "Ogiltig omvandlare \"{converter}\"", @@ -102,7 +114,7 @@ "error.page.notFound": "Sidan \"{slug}\" kan inte hittas", "error.page.num.invalid": "Ange ett giltigt nummer för sortering. Numret får inte vara negativt.", "error.page.slug.invalid": "Ange ett giltigt URL-prefix", - "error.page.slug.maxlength": "Slug length must be less than \"{length}\" characters", + "error.page.slug.maxlength": "Permalänkens längd måste vara kortare än \"{length}\" tecken", "error.page.sort.permission": "Sidan \"{slug}\" kan inte sorteras", "error.page.status.invalid": "Sätt en giltig status för sidan", "error.page.undefined": "Sidan kan inte hittas", @@ -185,22 +197,77 @@ "error.validation.size": "Storleken av värdet måste vara \"{size}\"", "error.validation.startswith": "Värdet måste börja med \"{start}\"", "error.validation.time": "Ange en giltig tid", + "error.validation.time.after": "Ange en tid efter {time}", + "error.validation.time.before": "Ange en tid före {time}", + "error.validation.time.between": "Ange en tid mellan {min} och {max}", "error.validation.url": "Ange en giltig URL", "field.required": "Fältet krävs", + "field.blocks.changeType": "Ändra typ", + "field.blocks.code.name": "Kod", + "field.blocks.code.language": "Språk", + "field.blocks.code.placeholder": "Din kod …", + "field.blocks.delete.confirm": "Vill du verkligen radera detta block?", + "field.blocks.delete.confirm.all": "Vill du verkligen radera alla block?", + "field.blocks.delete.confirm.selected": "Vill du verkligen radera de valda blocken?", + "field.blocks.empty": "Inga block än", + "field.blocks.fieldsets.label": "Välj en typ av block …", + "field.blocks.gallery.name": "Galleri", + "field.blocks.gallery.images.empty": "Inga bilder än", + "field.blocks.gallery.images.label": "Bilder", + "field.blocks.heading.level": "Nivå", + "field.blocks.heading.name": "Rubrik", + "field.blocks.heading.text": "Text", + "field.blocks.heading.placeholder": "Rubrik …", + "field.blocks.image.alt": "Alternativ text", + "field.blocks.image.caption": "Rubrik", + "field.blocks.image.crop": "Beskär", + "field.blocks.image.link": "Länk", + "field.blocks.image.location": "Plats", + "field.blocks.image.name": "Bild", + "field.blocks.image.placeholder": "Välj en bild", + "field.blocks.image.ratio": "Bildförhållande", + "field.blocks.list.name": "Punktlista", + "field.blocks.markdown.name": "Markdown", + "field.blocks.markdown.label": "Text", + "field.blocks.markdown.placeholder": "Markdown …", + "field.blocks.quote.name": "Citat", + "field.blocks.quote.text.label": "Text", + "field.blocks.quote.text.placeholder": "Citat …", + "field.blocks.quote.citation.label": "Citat", + "field.blocks.quote.citation.placeholder": "av …", + "field.blocks.text.name": "Text", + "field.blocks.text.placeholder": "Text …", + "field.blocks.video.caption": "Rubrik", + "field.blocks.video.name": "Video", + "field.blocks.video.placeholder": "Ange en URL till en video", + "field.blocks.video.url.label": "Video-URL", + "field.blocks.video.url.placeholder": "https://youtube.com/?v=", + "field.files.empty": "Inga filer valda än", + + "field.layout.delete": "Radera layout", + "field.layout.delete.confirm": "Vill du verkligen radera denna layout?", + "field.layout.empty": "Inga rader än", + "field.layout.select": "Välj en layout", + "field.pages.empty": "Inga sidor valda än", "field.structure.delete.confirm": "Vill du verkligen radera denna rad?", "field.structure.empty": "Inga poster än", "field.users.empty": "Inga användare valda än", + "file.blueprint": "Denna fil har ingen blueprint än. Du kan skapa en i /site/blueprints/{template}.yml", "file.delete.confirm": "Vill du verkligen radera
{filename}?", + "file.sort": "Ändra position", "files": "Filer", "files.empty": "Inga filer än", + "hide": "Göm", "hour": "Timme", "insert": "Infoga", + "insert.after": "Infoga efter", + "insert.before": "Infoga före", "install": "Installera", "installation": "Installation", @@ -259,7 +326,20 @@ "lock.isUnlocked": "Dina osparade ändringar har skrivits över av en annan användare. Du kan ladda ner dina ändringar för att slå ihop dem manuellt.", "login": "Logga in", + "login.code.label.login": "Inloggningskod", + "login.code.label.password-reset": "Kod för återställning av lösenord", + "login.code.placeholder.email": "000 000", + "login.code.text.email": "Om din e-postadress är registrerad skickades den begärda koden via e-post.", + "login.email.login.body": "Hej {user.nameOrEmail},\n\nDu begärde nyligen en inloggningskod för Kirby-panelen.\nFöljande kod är giltig i {timeout} minuter:\n\n{code}\n\nOm du inte har begärt en inloggningskod kan du ignorera det här e-postmeddelandet eller kontakta din administratör om du har frågor.\nAv säkerhetsskäl ska du INTE vidarebefordra detta e-postmeddelande.", + "login.email.login.subject": "Din inloggningskod", + "login.email.password-reset.body": "Hej {user.nameOrEmail},\n\nDu begärde nyligen en kod för återställning av lösenordet för Kirby-panelen.\nFöljande kod är giltig i {timeout} minuter:\n\n{code}\n\nOm du inte har begärt en återställning av lösenordet, ignorera detta e-postmeddelande eller kontakta din administratör om du har frågor.\nAv säkerhetsskäl ska du INTE vidarebefordra detta e-postmeddelande.", + "login.email.password-reset.subject": "Din kod för återställning av lösenord", "login.remember": "Håll mig inloggad", + "login.reset": "Återställ lösenord", + "login.toggleText.code.email": "Logga in via e-post", + "login.toggleText.code.email-password": "Logga in med lösenord", + "login.toggleText.password-reset.email": "Glömt ditt lösenord?", + "login.toggleText.password-reset.email-password": "← Tillbaka till inloggning", "logout": "Logga ut", @@ -289,13 +369,14 @@ "on": "på", "open": "Öppna", "options": "Alternativ", - "options.none": "No options", + "options.none": "Inga alternativ", "orientation": "Orientering", "orientation.landscape": "Liggande", "orientation.portrait": "Stående", "orientation.square": "Kvadrat", + "page.blueprint": "Denna sida har ingen blueprint än. Du kan skapa en i /site/blueprints/{template}.yml", "page.changeSlug": "Ändra URL", "page.changeSlug.fromTitle": "Skapa utifr\u00e5n titel", "page.changeStatus": "Ändra status", @@ -309,6 +390,7 @@ "page.duplicate.appendix": "Kopiera", "page.duplicate.files": "Kopiera filer", "page.duplicate.pages": "Kopiera sidor", + "page.sort": "Ändra position", "page.status": "Status", "page.status.draft": "Utkast", "page.status.draft.description": "Sidan är ett utkast och endast synlig för inloggade redaktörer eller via en hemlig länk", @@ -328,6 +410,7 @@ "password": "L\u00f6senord", "pixel": "Pixel", "prev": "Föregående", + "preview": "Förhandsgranska", "remove": "Ta bort", "rename": "Byt namn", "replace": "Ersätt", @@ -346,14 +429,15 @@ "save": "Spara", "search": "Sök", - "search.min": "Enter {min} characters to search", - "search.all": "Show all", - "search.results.none": "No results", + "search.min": "Ange {min} tecken för att söka", + "search.all": "Visa alla", + "search.results.none": "Inga träffar", "section.required": "Sektionen krävs", "select": "Välj", "settings": "Inställningar", + "show": "Visa", "size": "Storlek", "slug": "URL-appendix", "sort": "Sortera", @@ -361,6 +445,8 @@ "template": "Mall", "today": "Idag", + "site.blueprint": "Webbplatsen har ingen blueprint än. Du kan skapa en i /site/blueprints/site.yml", + "toolbar.button.code": "Kod", "toolbar.button.bold": "Fet", "toolbar.button.email": "E-post", @@ -419,6 +505,7 @@ "view.account": "Ditt konto", "view.installation": "Installation", + "view.resetPassword": "Återställ lösenord", "view.settings": "Inställningar", "view.site": "Webbplats", "view.users": "Anv\u00e4ndare", diff --git a/kirby/i18n/translations/tr.json b/kirby/i18n/translations/tr.json index 255a4ad..199350e 100755 --- a/kirby/i18n/translations/tr.json +++ b/kirby/i18n/translations/tr.json @@ -6,6 +6,8 @@ "change": "De\u011fi\u015ftir", "close": "Kapat", "confirm": "Tamam", + "collapse": "Daralt", + "collapse.all": "Tümünü daralt", "copy": "Kopyala", "create": "Oluştur", @@ -22,12 +24,15 @@ "days.wed": "\u00c7ar", "delete": "Sil", + "delete.all": "Tümünü sil", "dimensions": "Boyutlar", "disabled": "Devredışı", "discard": "Vazge\u00e7", "download": "İndir", "duplicate": "Kopyala", "edit": "D\u00fczenle", + "expand": "Genişlet", + "expand.all": "Tümünü genişlet", "dialog.files.empty": "Seçilecek dosya yok", "dialog.pages.empty": "Seçilecek sayfa yok", @@ -36,6 +41,7 @@ "email": "E-Posta", "email.placeholder": "eposta@ornek.com", + "error.access.code": "Geçersiz kod", "error.access.login": "Geçersiz giriş", "error.access.panel": "Panel'e erişim izniniz yok", "error.access.view": "Panel'in bu bölümüne erişim izniniz yok", @@ -47,6 +53,12 @@ "error.blueprint.notFound": "\"{name}\" adlı plan yüklenemedi", + "error.blocks.max.plural": "{max} bloktan fazlasını eklememelisiniz", + "error.blocks.max.singular": "Birden fazla blok eklememelisiniz", + "error.blocks.min.plural": "En az {min} blok eklemelisiniz", + "error.blocks.min.singular": "En az bir blok eklemelisiniz", + "error.blocks.validation": "{index} bloğunda bir hata var", + "error.email.preset.notFound": "\"{name}\" e-posta adresi bulunamadı", "error.field.converter.invalid": "Geçersiz dönüştürücü \"{converter}\"", @@ -185,22 +197,77 @@ "error.validation.size": "Değerin boyutu \"{size}\" olmalıdır", "error.validation.startswith": "Değer \"{start}\" ile başlamalıdır", "error.validation.time": "Lütfen geçerli bir zaman girin", + "error.validation.time.after": "Lütfen {time} sonrası bir tarih girin", + "error.validation.time.before": "Lütfen {time} öncesi bir tarih girin", + "error.validation.time.between": "Lütfen {min} ile {max} arasında bir tarih girin", "error.validation.url": "Lütfen geçerli bir adres girin", "field.required": "Alan gereklidir", + "field.blocks.changeType": "Türü değiştir", + "field.blocks.code.name": "Kod", + "field.blocks.code.language": "Dil", + "field.blocks.code.placeholder": "Kodunuz …", + "field.blocks.delete.confirm": "Bu bloğu gerçekten silmek istiyor musunuz?", + "field.blocks.delete.confirm.all": "Tüm blokları gerçekten silmek istiyor musunuz?", + "field.blocks.delete.confirm.selected": "Seçilen blokları gerçekten silmek istiyor musunuz?", + "field.blocks.empty": "Henüz blok yok", + "field.blocks.fieldsets.label": "Lütfen bir blok türü seçiniz …", + "field.blocks.gallery.name": "Galeri", + "field.blocks.gallery.images.empty": "Henüz görsel yok", + "field.blocks.gallery.images.label": "Görseller", + "field.blocks.heading.level": "Seviye", + "field.blocks.heading.name": "Başlık", + "field.blocks.heading.text": "Metin", + "field.blocks.heading.placeholder": "Başlık …", + "field.blocks.image.alt": "Alternatif metin", + "field.blocks.image.caption": "Altyazı", + "field.blocks.image.crop": "Kırp", + "field.blocks.image.link": "Bağlantı", + "field.blocks.image.location": "Lokasyon", + "field.blocks.image.name": "Görsel", + "field.blocks.image.placeholder": "Bir görsel seçin", + "field.blocks.image.ratio": "Oran", + "field.blocks.list.name": "Liste", + "field.blocks.markdown.name": "Markdown", + "field.blocks.markdown.label": "Metin", + "field.blocks.markdown.placeholder": "Markdown …", + "field.blocks.quote.name": "Alıntı", + "field.blocks.quote.text.label": "Metin", + "field.blocks.quote.text.placeholder": "Alıntı …", + "field.blocks.quote.citation.label": "Alıntı", + "field.blocks.quote.citation.placeholder": "yazar …", + "field.blocks.text.name": "Metin", + "field.blocks.text.placeholder": "Metin …", + "field.blocks.video.caption": "Altyazı", + "field.blocks.video.name": "Video", + "field.blocks.video.placeholder": "Bir video URL'si girin", + "field.blocks.video.url.label": "Video-URL", + "field.blocks.video.url.placeholder": "https://youtube.com/?v=", + "field.files.empty": "Henüz dosya seçilmedi", + + "field.layout.delete": "Düzeni sil", + "field.layout.delete.confirm": "Bu düzeni gerçekten silmek istiyor musunuz?", + "field.layout.empty": "Henüz satır yok", + "field.layout.select": "Bir düzen seçin", + "field.pages.empty": "Henüz sayfa seçilmedi", "field.structure.delete.confirm": "Bu girdiyi silmek istedi\u011finizden emin misiniz?", "field.structure.empty": "Hen\u00fcz bir girdi yok", "field.users.empty": "Henüz kullanıcı seçilmedi", + "file.blueprint": "Bu dosyanın henüz bir planı yok. Kurulumu /site/blueprints/{template}.yml'de tanımlayabilirsiniz.", "file.delete.confirm": "{filename} dosyasını silmek istediğinizden emin misiniz?", + "file.sort": "Pozisyon değiştir", "files": "Dosyalar", "files.empty": "Henüz dosya yok", + "hide": "Gizle", "hour": "Saat", "insert": "Ekle", + "insert.after": "Sonrasına ekle", + "insert.before": "Öncesine ekle", "install": "Kurulum", "installation": "Kurulum", @@ -259,7 +326,20 @@ "lock.isUnlocked": "Kaydedilmemiş değişikliklerin üzerine başka bir kullanıcı yazmış. Değişikliklerinizi el ile birleştirmek için değişikliklerinizi indirebilirsiniz.", "login": "Giri\u015f", + "login.code.label.login": "Giriş kodu", + "login.code.label.password-reset": "Şifre sıfırlama kodu", + "login.code.placeholder.email": "000 000", + "login.code.text.email": "E-posta adresiniz kayıtlıysa, istenen kod e-posta yoluyla gönderilmiştir.", + "login.email.login.body": "Merhaba {user.nameOrEmail},\n\nKısa süre önce Kirby Panel'i için bir giriş kodu istediniz.\nAşağıdaki giriş kodu {timeout} dakika boyunca geçerli olacaktır:\n\n{code}\n\nBir giriş kodu istemediyseniz, lütfen bu e-postayı dikkate almayın veya sorularınız varsa yöneticinize başvurun.\nGüvenlik için lütfen bu e-postayı İLETMEYİN.", + "login.email.login.subject": "Giriş kodunuz", + "login.email.password-reset.body": "Merhaba {user.nameOrEmail},\n\nKısa süre önce Kirby Panel'i için bir şifre sıfırlama kodu istediniz.\nAşağıdaki şifre sıfırlama kodu {timeout} dakika boyunca geçerli olacaktır:\n\n{code}\n\nŞifre sıfırlama kodu istemediyseniz, lütfen bu e-postayı dikkate almayın veya sorularınız varsa yöneticinizle iletişime geçin.\nGüvenlik için lütfen bu e-postayı İLETMEYİN.", + "login.email.password-reset.subject": "Şifre sıfırlama kodunuz", "login.remember": "Oturumumu açık tut", + "login.reset": "Şifreyi sıfırla", + "login.toggleText.code.email": "E-posta ile giriş yapın", + "login.toggleText.code.email-password": "Şifre ile giriş yapın", + "login.toggleText.password-reset.email": "Şifrenizi mi unuttunuz?", + "login.toggleText.password-reset.email-password": "← Girişe geri dön", "logout": "Güvenli Çıkış", @@ -296,6 +376,7 @@ "orientation.portrait": "Dikey", "orientation.square": "Kare", + "page.blueprint": "Bu sayfanın henüz bir planı yok. Kurulumu /site/blueprints/{template}.yml'de tanımlayabilirsiniz.", "page.changeSlug": "Web Adresini Değiştir", "page.changeSlug.fromTitle": "Ba\u015fl\u0131ktan olu\u015ftur", "page.changeStatus": "Durumu değiştir", @@ -309,6 +390,7 @@ "page.duplicate.appendix": "Kopya", "page.duplicate.files": "Dosyaları kopyala", "page.duplicate.pages": "Sayfaları kopyala", + "page.sort": "Pozisyon değiştir", "page.status": "Durum", "page.status.draft": "Taslak", "page.status.draft.description": "Sayfa taslak halinde ve yalnızca oturum açmış editörler için veya gizli bağlantı üzerinden görülebilir", @@ -328,6 +410,7 @@ "password": "\u015eifre", "pixel": "Piksel", "prev": "Önceki", + "preview": "Önizle", "remove": "Kaldır", "rename": "Yeniden Adlandır", "replace": "De\u011fi\u015ftir", @@ -354,6 +437,7 @@ "select": "Seç", "settings": "Ayarlar", + "show": "Göster", "size": "Boyut", "slug": "Web Adres Uzantısı", "sort": "Sırala", @@ -361,6 +445,8 @@ "template": "\u015eablon", "today": "Bugün", + "site.blueprint": "Sitenin henüz bir planı yok. Kurulumu /site/blueprints/site.yml'de tanımlayabilirsiniz.", + "toolbar.button.code": "Kod", "toolbar.button.bold": "Kalın Yazı", "toolbar.button.email": "E-Posta", @@ -419,6 +505,7 @@ "view.account": "Hesap Bilgilerin", "view.installation": "Kurulum", + "view.resetPassword": "Şifreyi sıfırla", "view.settings": "Ayarlar", "view.site": "Site", "view.users": "Kullan\u0131c\u0131lar", diff --git a/kirby/panel/dist/css/app.css b/kirby/panel/dist/css/app.css index 207327b..e5d7da8 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}:root{--color-backdrop:rgba(22,23,26,0.6);--color-background:#efefef;--color-border:#ccc;--color-focus:#4271ae;--color-focus-light:#81a2be;--color-focus-outline:rgba(66,113,174,0.25);--color-negative:#c82829;--color-negative-light:#d16464;--color-negative-outline:rgba(200,40,41,0.25);--color-notice:#f5871f;--color-notice-light:#de935f;--color-positive:#5d800d;--color-positive-light:#a7bd68;--color-positive-outline:rgba(93,128,13,0.25);--color-text:#16171a;--color-text-light:#777;--font-family-mono:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;--font-family-sans:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;--font-size-tiny:.75rem;--font-size-small:.875rem;--font-size-medium:1rem;--font-size-large:1.25rem;--font-size-huge:1.5rem;--font-size-monster:1.75rem;--box-shadow-dropdown:rgba(22,23,26,0.2) 0 2px 10px;--box-shadow-item:rgba(22,23,26,0.05) 0 2px 5px;--box-shadow-focus:#4271ae 0 0 0 2px,rgba(66,113,174,0.2) 0 0 0 2px}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}[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)}[data-invalid]:focus-within{border:1px solid #c82829!important;-webkit-box-shadow:rgba(200,40,41,.25) 0 0 0 2px!important;box-shadow:0 0 0 2px rgba(200,40,41,.25)!important}.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;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;width:100%}.k-dialog-box{position:relative;background:#efefef;-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}@media screen and (min-width:20rem){.k-dialog-box[data-size=small]{width:20rem}}@media screen and (min-width:22rem){.k-dialog-box[data-size=default]{width:22rem}}@media screen and (min-width:30rem){.k-dialog-box[data-size=medium]{width:30rem}}@media screen and (min-width:40rem){.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-dialog-pagination{margin-bottom:-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}.k-dialog-search{margin-bottom:.75rem}.k-dialog-search.k-input{background:rgba(0,0,0,.075);padding:0 1rem;height:36px;border-radius:1px}.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 .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]{-webkit-box-shadow:none;box-shadow:none;border:0;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-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.k-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-lock-loader{-webkit-animation:Spin 4s linear infinite;animation:Spin 4s linear infinite}.k-form-lock-loader .k-icon-loader{display:-webkit-box;display:-ms-flexbox;display:flex}.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;opacity:.4}.k-field[data-disabled] *{pointer-events:none}.k-field[data-disabled] .k-text[data-theme=help] *{pointer-events:auto}.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] .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;opacity:1!important}.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:275px;overflow-y:auto;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-multiselect-more{width:100%;padding:.75rem;color:hsla(0,0%,100%,.8);text-align:center;border-top:1px dashed hsla(0,0%,100%,.2)}.k-multiselect-more:hover{color:#fff}.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{position:relative;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 td:last-child{overflow:visible}.k-structure-table th{position:-webkit-sticky;position:sticky;top:0;right:0;left:0;width:100%;background:#fff;font-weight:400;z-index:1;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-align=right]>.k-input{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.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-options{position:relative;width:38px;text-align:center;height:38px}.k-structure-table .k-structure-table-options-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:grabbing;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-toggle-field-preview label{padding:0 .25rem 0 .75rem;display:-webkit-box;display:-ms-flexbox;display:flex;height:38px;cursor:pointer;overflow:hidden;white-space:nowrap}[dir=ltr] .k-toggle-field-preview .k-toggle-input-label{padding-left:.5rem}[dir=ltr] [data-align=right] .k-toggle-field-preview .k-toggle-input-label,[dir=rtl] .k-toggle-field-preview .k-toggle-input-label{padding-right:.5rem}[dir=rtl] [data-align=right] .k-toggle-field-preview .k-toggle-input-label{padding-left:.5rem}[dir=ltr] .k-toggle-field-preview .k-toggle-input{padding:0 .25rem 0 .75rem}[dir=rtl] .k-toggle-field-preview .k-toggle-input{padding:0 .75rem 0 .25rem}[data-align=right] .k-toggle-field-preview .k-toggle-input{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}[dir=ltr] [data-align=right] .k-toggle-field-preview .k-toggle-input{padding:0 .75rem 0 .25rem}.k-users-field-preview,[dir=rtl] [data-align=right] .k-toggle-field-preview .k-toggle-input{padding:0 .25rem 0 .75rem}.k-users-field-preview{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{word-wrap:break-word;font-size:.875rem}.k-box:not([data-theme=none]){background:#d9d9d9;border-radius:1px;padding:.375rem .75rem;line-height:1.25rem;border-left:2px solid #999;padding:.5rem 1.5rem}.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));grid-template-columns:repeat(auto-fill,minmax(min(12rem,100%),1fr))}@media screen and (min-width:30em){.k-cards[data-size=tiny]{grid-template-columns:repeat(auto-fill,minmax(10rem,1fr));grid-template-columns:repeat(auto-fill,minmax(min(10rem,100%),1fr))}.k-cards[data-size=small]{grid-template-columns:repeat(auto-fill,minmax(16rem,1fr));grid-template-columns:repeat(auto-fill,minmax(min(16rem,100%),1fr))}.k-cards[data-size=medium]{grid-template-columns:repeat(auto-fill,minmax(24rem,1fr));grid-template-columns:repeat(auto-fill,minmax(min(24rem,100%),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));grid-template-columns:repeat(auto-fill,minmax(min(32rem,100%),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}.k-column[data-sticky]>div{position:-webkit-sticky;position:sticky;top:4vh;z-index:2}@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.k-link[data-tabbed]{-webkit-box-shadow:none;box-shadow:none;outline:2px solid #4271ae;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;word-wrap:break-word}.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-status{height:auto!important}.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;margin-left:-.3rem}@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:-.15rem}}.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;background:#ccc;overflow:hidden;border:none}.k-progress::-webkit-progress-bar{border:none;background:#ccc;height:.5rem;border-radius:20px}.k-progress::-webkit-progress-value{border-radius:inherit;background:#4271ae;-webkit-transition:width .3s;transition:width .3s}.k-progress::-moz-progress-bar{border-radius:inherit;background:#4271ae;-moz-transition:width .3s;transition:width .3s}.k-sort-handle{cursor:move;cursor:grab;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:grabbing;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}.k-dialog-body .k-text{word-wrap:break-word}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{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[data-disabled]{opacity:.5;cursor:default}.k-card-options>.k-button[data-disabled]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.k-button[data-disabled]:focus .k-button-text,.k-button[data-disabled]:hover .k-button-text{opacity:.75}.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;margin-bottom:6rem}[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-link{outline:none}.k-link[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-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%;-webkit-transform:translateX(-50%);transform:translateX(-50%);background:#000}[dir=ltr] .k-dropdown-content.k-pagination-selector{direction:ltr}[dir=rtl] .k-dropdown-content.k-pagination-selector{direction:rtl}.k-pagination-settings{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}.k-pagination-settings .k-button{line-height:1}.k-pagination-settings label{display:-webkit-box;display:-ms-flexbox;display:flex;border-right:1px solid hsla(0,0%,100%,.35);-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:.625rem 1rem;font-size:.75rem}.k-pagination-settings label span{margin-right:.5rem}.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}[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;overflow-y:hidden}.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 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}.k-login-alert{padding:.5rem .75rem;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;min-height:38px;margin-bottom:2rem;background:#c82829;color:#fff;font-size:.875rem;border-radius:1px;-webkit-box-shadow:rgba(22,23,26,.2) 0 2px 10px;box-shadow:0 2px 10px rgba(22,23,26,.2);cursor:pointer}.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;box-sizing:border-box}:root{--color-backdrop:rgba(0,0,0,0.6);--color-background:#efefef;--color-border:#ccc;--color-focus:#4271ae;--color-focus-light:#7e9abf;--color-focus-outline:rgba(66,113,174,0.25);--color-negative:#c82829;--color-negative-light:#d16464;--color-negative-outline:rgba(200,40,41,0.25);--color-notice:#f4861f;--color-notice-light:#de935f;--color-positive:#5d800d;--color-positive-light:#a7bd68;--color-positive-outline:rgba(93,128,13,0.25);--color-text:#111;--color-text-light:#777;--font-family-mono:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;--font-family-sans:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;--font-size-tiny:0.75rem;--font-size-small:0.875rem;--font-size-medium:1rem;--font-size-large:1.25rem;--font-size-huge:1.5rem;--font-size-monster:1.875rem;--box-shadow-dropdown:0 10px 15px -3px rgba(0,0,0,0.1),0 4px 6px -2px rgba(0,0,0,0.05);--box-shadow-item:0 1px 3px 0 rgba(0,0,0,0.1),0 1px 2px 0 rgba(0,0,0,0.06);--box-shadow-focus:0 20px 25px -5px rgba(0,0,0,0.1),0 10px 10px -5px rgba(0,0,0,0.04)}noscript{padding:1.5rem;display:flex;align-items: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:#111;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{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:focus{outline:0}.k-panel[data-loading]{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;transform:translateZ(0)}.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;user-select:none}.k-offline-warning{position:fixed;content:" ";top:0;right:0;bottom:0;left:0;z-index:1000;background:rgba(17,17,17,.7);content:"offline";display:flex;align-items:center;justify-content:center;color:#fff}@keyframes LoadingCursor{to{cursor:progress}}@keyframes Spin{to{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-fatal{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.6);display:flex;z-index:700;align-items:center;justify-content:center;padding:1.5rem}.k-fatal-box{width:100%;height:100%;display:flex;flex-direction:column;background:#fff;padding:.75rem 1.5rem 1.5rem;box-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 10px 10px -5px rgba(0,0,0,.04);border-radius:.25rem}.k-fatal-box .k-headline{margin-bottom:.75rem}.k-fatal-iframe{border:0;width:100%;flex-grow:1;border:2px solid #ccc}[data-invalid]{border:1px solid rgba(200,40,41,.25);box-shadow:0 0 3px 2px rgba(200,40,41,.25)}[data-invalid]:focus-within{border:1px solid #c82829!important;box-shadow:0 0 0 2px rgba(200,40,41,.25)!important}.k-dialog{position:relative;background:#efefef;width:100%;box-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -2px rgba(0,0,0,.05);border-radius:1px;line-height:1;max-height:calc(100vh - 3rem);margin:1.5rem;display:flex;flex-direction:column}@media screen and (min-width:20rem){.k-dialog[data-size=small]{width:20rem}}@media screen and (min-width:22rem){.k-dialog[data-size=default]{width:22rem}}@media screen and (min-width:30rem){.k-dialog[data-size=medium]{width:30rem}}@media screen and (min-width:40rem){.k-dialog[data-size=large]{width:40rem}}.k-dialog-notification{padding:.75rem 1.5rem;background:#111;width:100%;line-height:1.25rem;color:#fff;display:flex;flex-shrink:0;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{flex-grow:1;word-wrap:break-word;overflow:hidden}.k-dialog-notification .k-button{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 #ddd;padding:0;border-bottom-left-radius:1px;border-bottom-right-radius:1px;line-height:1;flex-shrink:0}.k-dialog-footer .k-button-group{display:flex;margin:0;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-dialog-pagination{margin-bottom:-1.5rem;display:flex;justify-content:center;align-items:center}.k-dialog-search{margin-bottom:.75rem}.k-dialog-search.k-input{background:rgba(0,0,0,.075);padding:0 1rem;height:36px;border-radius:1px}.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-page-rename-dialog .k-form .k-field+.k-field{margin-top:2.25rem}.k-pages-dialog-navbar{display:flex;align-items: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{flex-grow:1;text-align:center}.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-drawer{position:fixed;top:0;right:0;bottom:0;left:0;z-index:400;display:flex;align-items:stretch;justify-content:flex-end;background:rgba(0,0,0,.2)}.k-drawer-box{position:relative;flex-basis:50rem;display:flex;flex-direction:column;background:#efefef;box-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 10px 10px -5px rgba(0,0,0,.04)}.k-drawer-header{flex-shrink:0;height:2.5rem;padding-left:1.5rem;display:flex;align-items:center;line-height:1;justify-content:space-between;background:#fff;font-size:.875rem}.k-drawer-title{padding:0 .75rem}.k-drawer-breadcrumb,.k-drawer-title{display:flex;flex-grow:1;align-items:center;min-width:0;margin-left:-.75rem;font-size:.875rem;font-weight:400}.k-drawer-breadcrumb li:not(:last-child) .k-button:after{position:absolute;display:inline-flex;right:-.75rem;width:1.5rem;justify-content:center;align-items:center;content:"›";color:#999;height:2.5rem}.k-drawer-breadcrumb .k-icon,.k-drawer-title .k-icon{width:1rem;color:#999;margin-right:.5rem}.k-drawer-breadcrumb .k-button{display:inline-flex;align-items:center;height:2.5rem;padding:0 .75rem}.k-drawer-breadcrumb .k-button-text{opacity:1}.k-drawer-breadcrumb .k-button .k-button-icon~.k-button-text{padding-left:0}.k-drawer-tabs{display:flex;align-items:center;line-height:1;margin-right:.75rem}.k-drawer-tab.k-button{height:2.5rem;padding:0 .75rem;display:flex;align-items:center;font-size:.75rem}.k-drawer-tab.k-button[aria-current]:after{position:absolute;bottom:-1px;left:.75rem;right:.75rem;content:"";background:#000;height:2px}.k-drawer-options{padding-right:.75rem}.k-drawer-option.k-button{width:2.5rem;height:2.5rem;color:#999;line-height:1}.k-drawer-option.k-button:focus,.k-drawer-option.k-button:hover{color:#000}.k-drawer-body{padding:1.5rem;flex-grow:1;overflow-y:auto;background:#efefef}.k-drawer[data-nested]{background:none}.k-calendar-input{padding:.5rem;background:#111;color:#efefef;border-radius:1px}.k-calendar-table{table-layout:fixed;width:100%;min-width:15rem;padding-top:.5rem}.k-calendar-input>nav{display:flex;direction:ltr}.k-calendar-input>nav .k-button{padding:.5rem}.k-calendar-selects{flex-grow:1;display:flex;align-items: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:#7e9abf!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:flex;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:not([data-disabled]){border-color:hsla(0,0%,100%,.25)}.k-calendar-day[aria-current=date] .k-button{color:#cca000;font-weight:500}.k-calendar-day[aria-selected=date] .k-button{border-color:#7e9abf;color:#7e9abf}.k-calendar-day[data-between]{background:#333}.k-calendar-day[data-first]{border-top-left-radius:100%;border-bottom-left-radius:100%}.k-calendar-day[data-last]{border-top-right-radius:100%;border-bottom-right-radius:100%}.k-calendar-today{text-align:center;padding-top:.5rem}.k-calendar-today .k-button{color:#7e9abf;font-size:.75rem;padding:1rem}.k-calendar-today .k-button-text{opacity:1}.k-counter{font-size:.75rem;color:#111;font-weight:600}.k-counter[data-invalid]{box-shadow:none;border:0;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:#7e9abf}.k-form-buttons .k-view{display:flex;justify-content:space-between;align-items:center}.k-form-button.k-button{font-weight:500;white-space:nowrap;line-height:1;height:2.5rem;display:flex;padding:0 1rem;align-items:center}.k-form-button:first-child{margin-left:-1rem}.k-form-button:last-child{margin-right:-1rem}.k-form-lock-info{display:flex;font-size:.875rem;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:flex;flex-shrink:0}.k-form-lock-loader{animation:Spin 4s linear infinite}.k-form-lock-loader .k-icon-loader{display:flex}.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;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:flex;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:flex}.k-field[data-disabled]{cursor:not-allowed;opacity:.4}.k-field[data-disabled] *{pointer-events:none}.k-field[data-disabled] .k-text[data-theme=help] *{pointer-events:auto}.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:flex;align-items:center;line-height:1;border:0;outline:0;background:none}.k-input-element{flex-grow:1}.k-input-icon{display:flex;justify-content: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;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] .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{align-self:stretch;display:flex;align-items:center;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:#555;padding-right:0}.k-input[data-theme=field] .k-input-after{color:#555;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:flex;align-items:center;justify-content:center;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;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:flex;align-items: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-login-code-form .k-user-info{height:38px;margin-bottom:2.25rem;padding:.5rem;background:#fff;border-radius:1px;box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06)}.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-writer-toolbar{position:absolute;display:flex;background:#000;height:30px;transform:translateX(-50%) translateY(-.75rem);z-index:801;box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06);color:#fff;border-radius:.25rem}.k-writer-toolbar-button.k-button{display:flex;align-items:center;justify-content:center;height:30px;width:30px;font-size:.875rem!important;color:currentColor;line-height:1}.k-writer-toolbar-button.k-button:hover{background:hsla(0,0%,100%,.15)}.k-writer-toolbar-button.k-writer-toolbar-button-active{color:#b1c2d8}.k-writer-toolbar-button.k-writer-toolbar-nodes{width:auto;padding:0 .75rem}.k-writer-toolbar .k-dropdown+.k-writer-toolbar-button{border-left:1px solid #555}.k-writer-toolbar-button.k-writer-toolbar-nodes:after{content:"";margin-left:.5rem;border-top:4px solid #fff;border-left:4px solid transparent;border-right:4px solid transparent}.k-writer-toolbar .k-dropdown-content{color:#000;background:#fff;margin-top:.5rem}.k-writer{position:relative;width:100%}.k-writer .ProseMirror{overflow-wrap:break-word;word-wrap:break-word;word-break:break-word;white-space:pre-wrap;font-variant-ligatures:none;line-height:inherit}.k-writer .ProseMirror:focus{outline:0}.k-writer .ProseMirror *{caret-color:currentColor}.k-writer .ProseMirror a{color:#4271ae;text-decoration:underline}.k-writer .ProseMirror>:last-child{margin-bottom:0}.k-writer .ProseMirror h1,.k-writer .ProseMirror h2,.k-writer .ProseMirror h3,.k-writer .ProseMirror ol,.k-writer .ProseMirror p,.k-writer .ProseMirror ul{margin-bottom:.75rem}.k-writer .ProseMirror h1{font-size:1.875rem;line-height:1.25em}.k-writer .ProseMirror h2{font-size:1.5rem;line-height:1.25em}.k-writer .ProseMirror h3{font-size:1.25rem;line-height:1.25em}.k-writer .ProseMirror h1 strong,.k-writer .ProseMirror h2 strong,.k-writer .ProseMirror h3 strong{font-weight:700}.k-writer .ProseMirror strong{font-weight:600}.k-writer .ProseMirror code{position:relative;font-size:.925em;display:inline-block;line-height:1.325;padding:.05em .325em;background:#ddd;border-radius:.25rem;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace}.k-writer .ProseMirror ol,.k-writer .ProseMirror ul{padding-left:1rem}.k-writer .ProseMirror ul>li{list-style:disc}.k-writer .ProseMirror ul ul>li{list-style:circle}.k-writer .ProseMirror ul ul ul>li{list-style:square}.k-writer .ProseMirror ol>li{list-style:decimal}.k-writer .ProseMirror li>ol,.k-writer .ProseMirror li>p,.k-writer .ProseMirror li>ul{margin:0}.k-writer-code pre{-moz-tab-size:2;-o-tab-size:2;tab-size:2;font-size:.875rem;line-height:2em;overflow-x:auto;overflow-y:hidden;white-space:pre}.k-writer-code code{font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace}.k-writer[data-placeholder][data-empty]:before{content:attr(data-placeholder);position:absolute;line-height:inherit;color:#999;pointer-events:none}.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:#111;background:#111}.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-datetime-input{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::-moz-placeholder{color:#999}.k-text-input::placeholder{color:#999}.k-text-input:focus{outline:0}.k-text-input:invalid{box-shadow:none;outline:0}.k-list-input .ProseMirror{line-height:1.5em}.k-list-input .ProseMirror ol>li::marker{font-size:.875rem;color:#999}.k-multiselect-input{display:flex;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:#111;border-bottom:1px dashed hsla(0,0%,100%,.2)}.k-multiselect-search>.k-button-text{flex:1;opacity:1!important}.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:275px;overflow-y:auto;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:#7e9abf;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-multiselect-more{width:100%;padding:.75rem;color:hsla(0,0%,100%,.8);text-align:center;border-top:1px dashed hsla(0,0%,100%,.2)}.k-multiselect-more:hover{color:#fff}.k-number-input{width:100%;border:0;background:none;font:inherit;color:inherit}.k-number-input::-moz-placeholder{color:$color-light-grey}.k-number-input::placeholder{color:$color-light-grey}.k-number-input:focus{outline:0}.k-number-input:invalid{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;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;box-shadow:inset 0 0 0 2px #fff}.k-radio-input input:checked+label:before{border-color:#111;background:#111}.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:flex;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:linear-gradient(#111,#111) 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:#111}.k-range-input-native::-ms-fill-lower{height:4px;background:#111}.k-range-input-native::-webkit-slider-thumb{margin-top:-6px;box-sizing:border-box;width:16px;height:16px;background:#efefef;border:4px solid #111;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 #111;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 #111;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: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:flex;align-items:center;color:#fff;font-size:.75rem;line-height:1;text-align:center;border-radius:1px;background:#111;margin-left:1rem;padding:0 .25rem;white-space:nowrap}.k-range-input-tooltip:after{position:absolute;top:50%;left:-5px;width:0;height:0;transform:translateY(-50%);border-top:5px solid transparent;border-right:5px solid #111;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:flex;flex-wrap:wrap}.k-tags-input .k-sortable-ghost{background:#4271ae}.k-tags-input-element{flex-grow:1;flex-basis:0;min-width:0}.k-tags-input:focus-within .k-tags-input-element{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::-moz-placeholder{color:#999}.k-textarea-input-native::placeholder{color:#999}.k-textarea-input-native:focus{outline:0}.k-textarea-input-native:invalid{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:sticky;top:0;right:0;left:0;z-index:1;box-shadow:0 2px 5px rgba(0,0,0,.05);border-bottom:1px solid rgba(0,0,0,.1);color:#000}.k-toggle-input{display:flex;align-items:center}.k-toggle-input-native{position:relative;height:16px;width:32px;border-radius:16px;border:2px solid #999;box-shadow:inset 0 0 0 2px #fff,inset -16px 0 0 2px #fff;background-color:#999;outline:0;transition:all .1s ease-in-out;-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer;flex-shrink:0}.k-toggle-input-native:checked{border-color:#111;box-shadow:inset 0 0 0 2px #fff,inset 16px 0 0 2px #fff;background-color:#111}.k-toggle-input-native[disabled]{border-color:#ccc;box-shadow:inset 0 0 0 2px #efefef,inset -16px 0 0 2px #efefef;background-color:#ccc}.k-toggle-input-native[disabled]:checked{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;flex-grow:1}.k-blocks-field{position:relative}.k-files-field[data-disabled] *{pointer-events:all!important}body{counter-reset:headline-counter}.k-headline-field{position:relative;padding-top:1.5rem}.k-fieldset>.k-grid .k-column:first-child .k-headline-field{padding-top:0}.k-headline-field .k-headline[data-numbered]:before{counter-increment:headline-counter;content:counter(headline-counter,decimal-leading-zero);color:#4271ae;font-weight:400;padding-right:.25rem}.k-info-field .k-headline{padding-bottom:.75rem;line-height:1.25rem}.k-layout-column{position:relative;height:100%;display:flex;flex-direction:column;background:#fff;min-height:6rem}.k-layout-column:focus{outline:0}.k-layout-column .k-blocks{background:none;box-shadow:none;padding:0;height:100%;background:#fff}.k-layout-column .k-blocks-list{display:flex;flex-direction:column;height:100%}.k-layout-column .k-blocks .k-block-container:last-of-type{flex-grow:1}.k-layout-column .k-blocks .k-empty{position:absolute;top:0;left:0;bottom:0;right:0;display:flex;align-items:center;justify-content:center;border:0;opacity:0;transition:opacity .3s}.k-layout-column .k-blocks .k-empty:hover{opacity:1}.k-layout-column .k-blocks .k-empty .k-icon{border-right:0}.k-layout{position:relative;padding-right:2rem;background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06)}.k-layout:not(:last-of-type){margin-bottom:1px}.k-layout:focus{outline:0}.k-layout-toolbar{position:absolute;right:0;top:0;bottom:0;width:2rem;display:flex;flex-direction:column;font-size:.875rem;background:#f7f7f7;border-left:1px solid #efefef;color:#999}.k-layout-toolbar:hover{color:#000}.k-layout-toolbar-button{width:2rem;height:2rem}.k-layout-toolbar .k-sort-handle{margin-top:auto;color:currentColor}.k-layout-columns.k-grid{grid-gap:1px;background:#ddd}.k-layout:not(:first-child) .k-layout-columns.k-grid{border-top:0}.k-layouts .k-sortable-ghost{position:relative;box-shadow:0 5px 10px rgba(17,17,17,.25);outline:2px solid #4271ae;cursor:grabbing;cursor:-webkit-grabbing;z-index:1}.k-layout-selector.k-dialog{background:#313740;color:#fff}.k-layout-selector .k-headline{margin-bottom:1.5rem;line-height:1;margin-top:-.25rem}.k-layout-selector ul{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:1.5rem}.k-layout-selector-option .k-grid{height:5rem;grid-gap:2px;box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06);cursor:pointer}.k-layout-selector-option:hover{outline:2px solid #c6d49d;outline-offset:2px}.k-layout-selector-option:last-child{margin-bottom:0}.k-layout-selector-option .k-column{display:flex;background:hsla(0,0%,100%,.2);justify-content:center;font-size:.75rem;align-items:center}.k-layout-add-button{display:flex;align-items:center;width:100%;color:#999;justify-content:center;padding:.75rem 0}.k-layout-add-button:hover{color:#000}.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-list-field .k-list-input{padding:.375rem .5rem .375rem .75rem}.k-pages-field[data-disabled] *{pointer-events:all!important}.k-structure-table{position:relative;table-layout:fixed;width:100%;background:#fff;font-size:.875rem;border-spacing:0;box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06)}.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 td:last-child{overflow:visible}.k-structure-table th{position:sticky;top:0;right:0;left:0;width:100%;background:#fff;font-weight:400;z-index:1;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-align=right]>.k-input{flex-direction:column;align-items:flex-end}.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:flex!important}.k-structure-table .k-structure-table-options{position:relative;width:38px;text-align:center;height:38px}.k-structure-table .k-structure-table-options-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;box-shadow:0 5px 10px rgba(17,17,17,.25);outline:2px solid #4271ae;margin-bottom:2px;cursor:grabbing;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;box-shadow:0 0 0 3px rgba(17,17,17,.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:flex;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: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: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-writer-field-input{line-height:1.5em;padding:.375rem .5rem}.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: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-date-field-preview,.k-url-field-preview{padding:0 .75rem}.k-url-field-preview a{color:#4271ae;text-decoration:underline;transition:color .3s;overflow:hidden;white-space:nowrap;max-width:100%;text-overflow:ellipsis}.k-url-field-preview a:hover{color:#000}.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-list-field-preview{padding:.325rem .75rem;line-height:1.5em}.k-list-field-preview ol,.k-list-field-preview ul{margin-left:1rem}.k-list-field-preview ul>li{list-style:disc}.k-list-field-preview ol ul>li,.k-list-field-preview ul ul>li{list-style:circle}.k-list-field-preview ol>li{list-style:decimal}.k-list-field-preview ol>li::marker{color:#999;font-size:.75rem}.k-pages-field-preview{padding:0 .25rem 0 .75rem;display:flex}.k-pages-field-preview li{line-height:0;margin-right:.5rem}.k-pages-field-preview .k-link{display:flex;align-items:stretch;background:#efefef;box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06)}.k-pages-field-preview-image{width:1.525rem;height:1.525rem;color:#999!important}.k-pages-field-preview figcaption{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-time-field-preview{padding:0 .75rem}.k-toggle-field-preview label{padding:0 .25rem 0 .75rem;display:flex;height:38px;cursor:pointer;overflow:hidden;white-space:nowrap}[dir=ltr] .k-toggle-field-preview .k-toggle-input-label{padding-left:.5rem}[dir=ltr] [data-align=right] .k-toggle-field-preview .k-toggle-input-label,[dir=rtl] .k-toggle-field-preview .k-toggle-input-label{padding-right:.5rem}[dir=rtl] [data-align=right] .k-toggle-field-preview .k-toggle-input-label{padding-left:.5rem}[dir=ltr] .k-toggle-field-preview .k-toggle-input{padding:0 .25rem 0 .75rem}[dir=rtl] .k-toggle-field-preview .k-toggle-input{padding:0 .75rem 0 .25rem}[data-align=right] .k-toggle-field-preview .k-toggle-input{flex-direction:row-reverse}[dir=ltr] [data-align=right] .k-toggle-field-preview .k-toggle-input{padding:0 .75rem 0 .25rem}.k-users-field-preview,[dir=rtl] [data-align=right] .k-toggle-field-preview .k-toggle-input{padding:0 .25rem 0 .75rem}.k-users-field-preview{display:flex}.k-users-field-preview li{line-height:0;margin-right:.5rem}.k-users-field-preview .k-link{display:flex;align-items:stretch;background:#efefef;box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06)}.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{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-writer-field-preview{padding:.325rem .75rem;line-height:1.5em}.k-writer-field-preview p:not(:last-child){margin-bottom:1.5em}.k-aspect-ratio{position:relative;display:block;overflow:hidden;padding-bottom:100%}.k-aspect-ratio>*{position:absolute;top:0;left:0;bottom:0;right:0;height:100%;width:100%;-o-object-fit:contain;object-fit:contain}.k-aspect-ratio[data-cover]>*{-o-object-fit:cover;object-fit:cover}.k-bar{display:flex;align-items:center;justify-content:space-between;line-height:1}.k-bar-slot{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{word-wrap:break-word;font-size:.875rem}.k-box:not([data-theme=none]){background:#d9d9d9;border-radius:1px;padding:.375rem .75rem;line-height:1.25rem;border-left:2px solid #999;padding:.5rem 1.5rem}.k-box[data-theme=code]{background:#111;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:flex;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:#d3dde9;border:0;border-left:2px solid #7e9abf;padding:.5rem 1.5rem}.k-box[data-theme=empty]{text-align:center;border-left:0;padding:3rem 1.5rem;display:flex;justify-content:center;align-items:center;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;box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06)}.k-card,.k-card a{min-width:0;background:#fff}.k-card:focus-within{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:#111;z-index:1;will-change:opacity;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));grid-template-columns:repeat(auto-fill,minmax(min(12rem,100%),1fr))}@media screen and (min-width:30em){.k-cards[data-size=tiny]{grid-template-columns:repeat(auto-fill,minmax(10rem,1fr));grid-template-columns:repeat(auto-fill,minmax(min(10rem,100%),1fr))}.k-cards[data-size=small]{grid-template-columns:repeat(auto-fill,minmax(16rem,1fr));grid-template-columns:repeat(auto-fill,minmax(min(16rem,100%),1fr))}.k-cards[data-size=medium]{grid-template-columns:repeat(auto-fill,minmax(24rem,1fr));grid-template-columns:repeat(auto-fill,minmax(min(24rem,100%),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));grid-template-columns:repeat(auto-fill,minmax(min(32rem,100%),1fr))}}.k-collection-help{padding:.5rem .75rem}.k-collection-footer{display:flex;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}.k-column[data-sticky]>div{position:sticky;top:4vh;z-index:2}@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-column[data-disabled]{cursor:not-allowed;opacity:.4}.k-column[data-disabled] *{pointer-events:none}.k-column[data-disabled] .k-text[data-theme=help] *{pointer-events:auto}.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;box-shadow:0 0 0 3px rgba(66,113,174,.25)}.k-empty{display:flex;align-items:stretch;border-radius:1px;color:#777;border:1px dashed #ccc}button.k-empty{width:100%}button.k-empty:focus{outline:none}.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;justify-content:center;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:#2b2b2b}.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:flex;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.k-link[data-tabbed]{box-shadow:none;outline:2px solid #4271ae;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%;transform:translate(-50%,-50%) scale(4)}.k-file-preview-details{padding:1.5rem;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;word-wrap:break-word}.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;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-list .k-list-item:not(:last-child){margin-bottom:2px}.k-list-item{position:relative;display:flex;align-items:center;background:#fff;border-radius:1px;box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06)}.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;box-shadow:0 5px 10px rgba(17,17,17,.25)}.k-list-item.k-sortable-fallback{opacity:.25!important;overflow:hidden}.k-list-item-image{width:38px;height:38px;overflow:hidden;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:flex;align-items:center;flex-grow:1;flex-shrink:1;overflow:hidden;outline:none}.k-list-item-content[data-tabbed]{outline:none;box-shadow:0 0 0 2px currentColor}.k-list-item-text{display:flex;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;align-items:baseline;width:100%;line-height:1.25rem;padding:.5rem .75rem}.k-list-item-text em{font-style:normal;margin-right:1rem;flex-grow:1;font-size:.875rem;color:#111}.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;font-variant-numeric:tabular-nums;color:#777;display:none}@media screen and (min-width:30em){.k-list-item-text small{display:block}}.k-list-item-status{height:auto!important}.k-list-item-options{position:relative;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-overlay{position:fixed;top:0;right:0;bottom:0;left:0;width:100%;height:100%;z-index:700;transform:translateZ(0)}.k-overlay[data-centered]{display:flex;align-items:center;justify-content:center}.k-overlay[data-dimmed]{background:rgba(0,0,0,.6)}.k-overlay-loader{color:#fff}.k-tabs{position:relative;background:#e9e9e9;border-top:1px solid #ccc;border-left:1px solid #ccc;border-right:1px solid #ccc}.k-tabs nav{display:flex;justify-content:center;margin-left:-1px;margin-right:-1px}.k-tab-button.k-button{position:relative;z-index:1;display:inline-flex;justify-content: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;flex-grow:1;flex-shrink:1;flex-direction:column;max-width:15rem}@media screen and (min-width:30em){.k-tab-button.k-button{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:#000}.k-tab-button[aria-current]:after{left:0;right:0;height:1px;bottom:-1px;background:#efefef}.k-tabs-dropdown{top:100%;right:0}[dir=ltr] .k-tabs-badge{padding-left:.25rem}[dir=rtl] .k-tabs-badge{padding-right:.25rem}.k-tabs[data-theme=notice] .k-tabs-badge{color:#f4861f}.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:flex;align-items:center;justify-content:center;padding:0 3rem;overflow:auto}.k-view[data-align=center]>*{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.875rem}}.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:flex;align-items:center;justify-content:center;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:#111;color:#fff}.k-icon[data-back=white]{background:#fff;color:#111}.k-icon[data-back=pattern]{background:#2b2b2b 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;margin-left:-.3rem}@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:-.15rem}}.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%;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:#111}.k-image[data-back=white] span{background:#fff;color:#111}.k-image[data-back=white] .k-image-error{background:#111;color:#fff}.k-image[data-back=pattern] span{background:#2b2b2b url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXR0ZXJuIGlkPSJhIiB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHBhdHRlcm5Vbml0cz0idXNlclNwYWNlT25Vc2UiPjxwYXRoIGZpbGw9InJnYmEoMCwgMCwgMCwgMC4yKSIgZD0iTTAgMGgxMHYxMEgwem0xMCAxMGgxMHYxMEgxMHoiLz48L3BhdHRlcm4+PHJlY3QgZmlsbD0idXJsKCNhKSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIvPjwvc3ZnPg==")}.k-loader{z-index:1}.k-loader svg{animation:Spin .9s linear infinite}.k-progress{-webkit-appearance:none;width:100%;height:.5rem;border-radius:5rem;background:#ccc;overflow:hidden;border:none}.k-progress::-webkit-progress-bar{border:none;background:#ccc;height:.5rem;border-radius:20px}.k-progress::-webkit-progress-value{border-radius:inherit;background:#4271ae;-webkit-transition:width .3s;transition:width .3s}.k-progress::-moz-progress-bar{border-radius:inherit;background:#4271ae;-moz-transition:width .3s;transition:width .3s}.k-sort-handle{cursor:move;cursor:grab;cursor:-webkit-grab;color:#111;justify-content:center;align-items:center;line-height:0;width:2rem;height:2rem;display:flex;will-change:opacity,color;transition:opacity .3s;z-index:1}.k-sort-handle svg{width:1rem}.k-sort-handle:active{cursor:grabbing;cursor:-webkit-grabbing}.k-status-icon svg{width:14px;height:14px}.k-status-icon-listed .k-icon{color:#a7bd68}.k-status-icon-unlisted .k-icon{color:#7e9abf}.k-status-icon-draft .k-icon{color:#d16464}.k-status-icon[data-disabled]{opacity:1!important}.k-status-icon[data-disabled] .k-icon{color:#ccc;opacity:.5}.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}.k-dialog-body .k-text{word-wrap:break-word}.k-user-info{display:flex;align-items:center;line-height:1;font-size:.875rem}.k-user-info .k-icon,.k-user-info .k-image{width:1.5rem;margin-right:.75rem}.k-user-info .k-icon{height:1.5rem;background:#000;color:#fff}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{display:inline-block;position:relative;font-size:.875rem;transition:color .3s}.k-button,.k-button:focus,.k-button:hover{outline:none}.k-button[data-tabbed]{outline:none;box-shadow:0 0 0 2px currentColor}.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:inline-flex;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[data-disabled]{opacity:.5;cursor:default}.k-card-options>.k-button[data-disabled]{display:inline-flex}.k-button[data-disabled]:focus .k-button-text,.k-button[data-disabled]:hover .k-button-text{opacity:.75}.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:#111;color:#fff;z-index:800;box-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -2px rgba(0,0,0,.05);border-radius:1px;text-align:left;margin-bottom:6rem}[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:flex;width:100%;align-items:center;font-size:.875rem;padding:6px 16px}.k-dropdown-item:focus{outline:none;box-shadow:0 0 0 2px currentColor}.k-dropdown-item .k-button-figure{text-align:center;padding-right:.5rem}.k-link{outline:none}.k-link[data-tabbed]{outline:none;box-shadow:0 0 0 2px currentColor}.k-pagination{-webkit-user-select:none;-moz-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%;transform:translateX(-50%);background:#000}[dir=ltr] .k-dropdown-content.k-pagination-selector{direction:ltr}[dir=rtl] .k-dropdown-content.k-pagination-selector{direction:rtl}.k-pagination-settings{display:flex;align-items:center;justify-content:space-between}.k-pagination-settings .k-button{line-height:1}.k-pagination-settings label{display:flex;border-right:1px solid hsla(0,0%,100%,.35);align-items:center;padding:.625rem 1rem;font-size:.75rem}.k-pagination-settings label span{margin-right:.5rem}.k-prev-next{direction:ltr}.k-search{max-width:30rem;margin:0 auto;box-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -2px rgba(0,0,0,.05)}@media screen and (min-width:65em){.k-search{margin:2.5rem auto}}.k-search-input{background:#efefef;display:flex}.k-search-types{flex-shrink:0;display:flex}.k-search-types>.k-button{padding:0 0 0 1rem;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;flex-grow:1;font:inherit;padding:.75rem;border:0;height:2.5rem}.k-search-close{width:3rem;line-height:1}.k-search-close .k-icon-loader{animation:Spin 2s linear infinite}.k-search input:focus{outline:0}.k-search-results{padding:.5rem 1rem 1rem;background:#efefef}.k-search li{background:#fff;display:flex;box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06)}.k-search li:not(:last-child){margin-bottom:.25rem}.k-search li[data-selected]{outline:2px solid #4271ae}.k-search li .k-link{display:flex;align-items:center;flex-grow:1}.k-search-item-image,.k-search-item-image>*{height:50px;width:50px}.k-search-item-info{padding:.5rem .75rem;line-height:1.125}.k-search li strong{display:block;font-size:.875rem;font-weight:400}.k-search-empty,.k-search li small{font-size:.75rem;color:#777}.k-search-empty{text-align:center}.k-tag{position:relative;font-size:.875rem;line-height:1;cursor:pointer;background-color:#111;color:#efefef;border-radius:1px;display:flex;align-items:center;justify-content:space-between;-webkit-user-select:none;-moz-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:flex;align-items: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;flex-shrink:0;height:2.5rem;line-height:1;background:#111}.k-topbar-wrapper{position:relative;display:flex;align-items:center;margin-left:-.75rem;margin-right:-.75rem}.k-topbar-loader{position:absolute;top:0;right:0;bottom:0;height:2.5rem;width:2.5rem;padding:.75rem;background:#111;z-index:1;display:flex;align-items:center;justify-content:center}.k-topbar-loader svg{height:18px;width:18px;animation:Spin .9s linear infinite}.k-topbar-menu{flex-shrink:0}.k-topbar-menu ul{padding:.5rem 0}.k-topbar-menu-button{display:flex;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:flex;opacity:1}.k-topbar-view-button{flex-shrink:0;display:flex;align-items:center}[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{flex-grow:1;display:flex;overflow-y:hidden}.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;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;box-shadow:0 0 0 2px currentColor}.k-topbar-crumbs a:not(:last-child){max-width:15vw}.k-topbar-breadcrumb-menu{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:#111;height:2.5rem;display:flex;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(17,17,17,0),#111)}[dir=rtl] .k-topbar-signals:before{right:-.5rem;background:-webkit-linear-gradient(right,rgba(17,17,17,0),#111)}.k-topbar-signals .k-button{line-height:1}.k-topbar-notification{font-weight:600;line-height:1;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:#111;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:flex;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:flex;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-info-section-headline{margin-bottom:.5rem}.k-files-section[data-processing],.k-pages-section[data-processing]{pointer-events:none}.k-fields-issue-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:flex;align-items: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-fields{position:relative}.k-login-toggler{position:absolute;top:0;right:0;z-index:1;text-decoration:underline;font-size:.875rem}.k-login-form label abbr{visibility:hidden}.k-login-buttons{display:flex;align-items:center;justify-content:flex-end;padding:1.5rem 0}.k-login-button{padding:.5rem 1rem;font-weight:500;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-back-button,.k-login-checkbox{display:flex;align-items:center;flex-grow:1}[dir=ltr] .k-login-back-button{margin-left:-1rem}[dir=rtl] .k-login-back-button{margin-right:-1rem}.k-login-checkbox{padding:.5rem 0;font-size:.875rem;cursor:pointer}.k-login-checkbox .k-checkbox-text{opacity:.75;transition:opacity .3s}.k-login-checkbox:focus span,.k-login-checkbox:hover span{opacity:1}.k-login-alert{padding:.5rem .75rem;display:flex;justify-content:space-between;align-items:center;min-height:38px;margin-bottom:2rem;background:#c82829;color:#fff;font-size:.875rem;border-radius:1px;box-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -2px rgba(0,0,0,.05);cursor:pointer}.k-password-reset-view .k-user-info{height:38px;margin-bottom:2.25rem;padding:.5rem;background:#fff;border-radius:1px;box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06)}.k-settings-view section{margin-bottom:3rem}.k-settings-view .k-header{margin-bottom:1.5rem}.k-settings-view header{margin-bottom:.5rem;display:flex;justify-content:space-between}.k-system-info-box{background:#fff;padding:.75rem;display:flex}.k-system-info-box li{flex-shrink:0;flex-grow:1;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:flex;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%;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:#111;color:#999}.k-user-name-placeholder{color:#999;transition:color .3s}.k-header[data-editable] .k-user-name-placeholder:hover{color:#111}.k-block-container{position:relative;padding:.75rem;border-bottom:1px dashed rgba(0,0,0,.1);background:#fff}.k-block-container:last-of-type{border-bottom:0}.k-block-container:focus{outline:0}.k-block-container[data-batched]{z-index:2;border-bottom-color:transparent}.k-block-container[data-batched]:after{position:absolute;content:"";top:0;right:0;bottom:0;left:0;background:rgba(203,215,229,.375);mix-blend-mode:multiply;border:1px solid #4271ae}.k-block-container[data-selected]{z-index:2;box-shadow:0 0 0 1px #4271ae,0 0 0 3px rgba(66,113,174,.25);border-bottom-color:transparent}.k-block-container .k-block-options{position:absolute;top:0;right:.75rem;margin-top:calc(-1.75rem + 2px);display:none}.k-block-container[data-last-in-batch] .k-block-options,.k-block-container[data-selected] .k-block-options{display:block}.k-block-container[data-hidden] .k-block{opacity:.25}.k-blocks{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06);border-radius:.25rem}.k-blocks[data-alt] .k-block-container>*{pointer-events:none}.k-blocks[data-empty]{padding:0;background:none;box-shadow:none}.k-blocks .k-sortable-ghost{outline:2px solid #4271ae;box-shadow:0 5px 10px rgba(17,17,17,.25);cursor:grabbing;cursor:-webkit-grabbing}.k-blocks-empty.k-empty{cursor:pointer;display:flex;align-items:center}.k-blocks-list>.k-blocks-empty:not(:only-child){display:none}.k-block-figure{cursor:pointer}.k-block-figure iframe{border:0;pointer-events:none;background:#000}.k-block-figure figcaption{padding-top:.5rem;color:#777;font-size:.875rem;text-align:center}.k-block-figure-empty.k-button{display:flex;width:100%;height:6rem;border-radius:.125rem;align-items:center;justify-content:center;color:#777;background:#efefef}.k-block-options{display:flex;align-items:center;background:#fff;z-index:800;box-shadow:-2px 0 5px rgba(0,0,0,.1),0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06),0 20px 25px -5px rgba(0,0,0,.1),0 10px 10px -5px rgba(0,0,0,.04);color:#000;border-radius:.25rem}.k-block-options-button{width:30px;height:30px;line-height:1;display:inline-flex;align-items:center;justify-content:center;border-right:1px solid #efefef}.k-block-options-button:first-child{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.k-block-options-button:last-child{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.k-block-options-button[aria-current]{color:#4271ae}.k-block-options-button:hover{background:#f7f7f7}.k-block-handle{border-right:0}.k-block-options .k-dropdown-content{margin-top:.5rem}.k-block-selector.k-dialog{background:#313740;color:#fff}.k-block-selector .k-headline{margin-bottom:1rem}.k-block-selector details:not(:last-of-type){margin-bottom:1.5rem}.k-block-selector summary{font-size:.75rem;cursor:pointer;color:#ccc}.k-block-selector details:only-child summary{pointer-events:none}.k-block-selector summary:focus{outline:0}.k-block-selector summary:focus-visible{color:#a7bd68}.k-block-types{display:grid;grid-gap:2px;margin-top:.75rem;grid-template-columns:repeat(1,1fr)}.k-block-types .k-button{display:flex;align-items:top;background:rgba(0,0,0,.5);width:100%;text-align:left;padding:0 .75rem 0 0;line-height:1.5em}.k-block-types .k-button:focus{outline:2px solid #c6d49d}.k-block-types .k-button .k-button-text{padding:.5rem 0 .5rem .5rem}.k-block-types .k-button .k-icon{width:38px;height:38px}.k-block-title{display:flex;align-items:center;min-width:0;padding-right:.75rem;font-size:.875rem;line-height:1}.k-block-icon{width:1rem;color:#999}.k-block-icon,.k-block-name{margin-right:.5rem}.k-block-label{color:#777;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.k-block-type-code-editor{position:relative;font-size:.875rem;line-height:1.5em;background:#000;border-radius:.25rem;padding:.5rem .75rem 3rem;color:#fff;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace}.k-block-type-code-editor .k-editor{white-space:pre-wrap;line-height:1.75em}.k-block-type-code-editor-language{font-size:.875rem;position:absolute;right:0;bottom:0}.k-block-type-code-editor-language .k-icon{position:absolute;top:0;left:0;height:1.5rem;display:flex;width:2rem;z-index:0}.k-block-type-code-editor-language .k-select-input{position:relative;padding:.325rem .75rem .5rem 2rem;z-index:1;font-size:.75rem}.k-block-type-default .k-block-title{line-height:1.5em}.k-block-type-gallery ul{display:grid;grid-gap:.75rem;grid-template-columns:repeat(auto-fit,minmax(6rem,1fr));line-height:0;align-items:center;justify-content:center;cursor:pointer}.k-block-type-gallery li:empty{padding-bottom:100%;background:#efefef}.k-block-type-gallery li{display:flex;position:relative;align-items:center;justify-content:center}.k-block-type-gallery li img{flex-grow:1;max-width:100%}.k-block-type-heading-input{font-weight:600;line-height:1.25em}.k-block-type-heading-input[data-level=h1]{font-size:1.875rem;line-height:1.125em}.k-block-type-heading-input[data-level=h2]{font-size:1.5rem}.k-block-type-heading-input[data-level=h3]{font-size:1.25rem}.k-block-type-heading-input[data-level=h4]{font-size:1.125rem}.k-block-type-heading-input[data-level=h5]{line-height:1.5em;font-size:1rem}.k-block-type-heading-input[data-level=h6]{line-height:1.5em;font-size:.875rem}.k-block-type-heading-input .ProseMirror strong{font-weight:700}.k-block-type-image .k-block-figure-container{display:block;text-align:center;line-height:0}.k-block-type-image-auto{max-width:100%;max-height:30rem}.k-block-type-markdown-input{position:relative;font-size:.875rem;line-height:1.5em;background:#efefef;border-radius:.25rem;padding:.5rem .5rem 0;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace}.k-block-type-quote-editor{padding-left:1rem;border-left:2px solid #000}.k-block-type-quote-text{font-size:1.25rem;margin-bottom:.25rem;line-height:1.25em}.k-block-type-quote-citation{font-style:italic;font-size:.875rem;color:#777}.k-block-type-table-preview{cursor:pointer;width:100%;border:1px solid #ddd;border-spacing:0;border-radius:.125rem;overflow:hidden;table-layout:fixed}.k-block-type-table-preview td,.k-block-type-table-preview th{text-align:left;line-height:1.5em;padding:.5rem .75rem;font-size:.875rem;border-bottom:1px solid #ddd}.k-block-type-table-preview th{background:#f7f7f7;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:.75rem}.k-block-type-table-preview tr:last-child td{border-bottom:0}.k-block-type-table-preview [data-align=left]{text-align:left}.k-block-type-table-preview [data-align=right]{text-align:right}.k-block-type-table-preview [data-align=center]{text-align:center}.k-block-type-table-preview-empty{color:#777;font-size:.875rem}.k-block-type-text-input{font-size:1rem;line-height:1.5em} \ No newline at end of file diff --git a/kirby/panel/dist/img/icons.svg b/kirby/panel/dist/img/icons.svg index 090d7ab..34bb1f0 100755 --- a/kirby/panel/dist/img/icons.svg +++ b/kirby/panel/dist/img/icons.svg @@ -34,6 +34,7 @@ + @@ -64,6 +65,9 @@ + + + @@ -95,6 +99,13 @@ + + + + + + + @@ -228,6 +239,10 @@ + + + + @@ -264,6 +279,11 @@ + + + + + @@ -318,6 +338,11 @@ + + + + + diff --git a/kirby/panel/dist/js/app.js b/kirby/panel/dist/js/app.js index 92be119..3e3e458 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,a,o=e[0],u=e[1],l=e[2],p=0,d=[];p1&&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},changeSlug:function(e,n){var i=this;return Object(j["a"])(regeneratorRuntime.mark((function r(){return regeneratorRuntime.wrap((function(r){while(1)switch(r.prev=r.next){case 0:return r.abrupt("return",t.patch("pages/"+i.id(e)+"/slug",{slug:n}));case 1:case"end":return r.stop()}}),r)})))()},changeStatus:function(e,n,i){var r=this;return Object(j["a"])(regeneratorRuntime.mark((function s(){return regeneratorRuntime.wrap((function(s){while(1)switch(s.prev=s.next){case 0:return s.abrupt("return",t.patch("pages/"+r.id(e)+"/status",{status:n,position:i}));case 1:case"end":return s.stop()}}),s)})))()},changeTemplate:function(e,n){var i=this;return Object(j["a"])(regeneratorRuntime.mark((function r(){return regeneratorRuntime.wrap((function(r){while(1)switch(r.prev=r.next){case 0:return r.abrupt("return",t.patch("pages/"+i.id(e)+"/template",{template:n}));case 1:case"end":return r.stop()}}),r)})))()},changeTitle:function(e,n){var i=this;return Object(j["a"])(regeneratorRuntime.mark((function r(){return regeneratorRuntime.wrap((function(r){while(1)switch(r.prev=r.next){case 0:return r.abrupt("return",t.patch("pages/"+i.id(e)+"/title",{title:n}));case 1:case"end":return r.stop()}}),r)})))()},children:function(e,n){var i=this;return Object(j["a"])(regeneratorRuntime.mark((function r(){return regeneratorRuntime.wrap((function(r){while(1)switch(r.prev=r.next){case 0:return r.abrupt("return",t.post("pages/"+i.id(e)+"/children/search",n));case 1:case"end":return r.stop()}}),r)})))()},create:function(e,n){var i=this;return Object(j["a"])(regeneratorRuntime.mark((function r(){return regeneratorRuntime.wrap((function(r){while(1)switch(r.prev=r.next){case 0:if(null!==e&&"/"!==e){r.next=2;break}return r.abrupt("return",t.post("site/children",n));case 2:return r.abrupt("return",t.post("pages/"+i.id(e)+"/children",n));case 3:case"end":return r.stop()}}),r)})))()},delete:function(e,n){var i=this;return Object(j["a"])(regeneratorRuntime.mark((function r(){return regeneratorRuntime.wrap((function(r){while(1)switch(r.prev=r.next){case 0:return r.abrupt("return",t.delete("pages/"+i.id(e),n));case 1:case"end":return r.stop()}}),r)})))()},duplicate:function(e,n,i){var r=this;return Object(j["a"])(regeneratorRuntime.mark((function s(){return regeneratorRuntime.wrap((function(s){while(1)switch(s.prev=s.next){case 0:return s.abrupt("return",t.post("pages/"+r.id(e)+"/duplicate",{slug:n,children:i.children||!1,files:i.files||!1}));case 1:case"end":return s.stop()}}),s)})))()},get:function(e,n){var i=this;return Object(j["a"])(regeneratorRuntime.mark((function r(){var s;return regeneratorRuntime.wrap((function(r){while(1)switch(r.prev=r.next){case 0:return r.next=2,t.get("pages/"+i.id(e),n);case 2:return s=r.sent,!0===Array.isArray(s.content)&&(s.content={}),r.abrupt("return",s);case 5:case"end":return r.stop()}}),r)})))()},id:function(t){return t.replace(/\//g,"+")},files:function(e,n){var i=this;return Object(j["a"])(regeneratorRuntime.mark((function r(){return regeneratorRuntime.wrap((function(r){while(1)switch(r.prev=r.next){case 0:return r.abrupt("return",t.post("pages/"+i.id(e)+"/files/search",n));case 1:case"end":return r.stop()}}),r)})))()},link:function(t){return"/"+this.url(t)},options:function(e){var n=arguments,i=this;return Object(j["a"])(regeneratorRuntime.mark((function r(){var s,a,o,u;return regeneratorRuntime.wrap((function(r){while(1)switch(r.prev=r.next){case 0:return s=n.length>1&&void 0!==n[1]?n[1]:"view",r.next=3,t.get(i.url(e),{select:"options"});case 3:return a=r.sent,o=a.options,u=[],"list"===s&&(u.push({click:"preview",icon:"open",text:F["a"].i18n.translate("open"),disabled:!1===o.preview}),u.push("-")),u.push({click:"rename",icon:"title",text:F["a"].i18n.translate("rename"),disabled:!o.changeTitle}),u.push({click:"duplicate",icon:"copy",text:F["a"].i18n.translate("duplicate"),disabled:!o.duplicate}),u.push("-"),u.push({click:"url",icon:"url",text:F["a"].i18n.translate("page.changeSlug"),disabled:!o.changeSlug}),u.push({click:"status",icon:"preview",text:F["a"].i18n.translate("page.changeStatus"),disabled:!o.changeStatus}),u.push({click:"template",icon:"template",text:F["a"].i18n.translate("page.changeTemplate"),disabled:!o.changeTemplate}),u.push("-"),u.push({click:"remove",icon:"trash",text:F["a"].i18n.translate("delete"),disabled:!o.delete}),r.abrupt("return",u);case 16:case"end":return r.stop()}}),r)})))()},preview:function(t){var e=this;return Object(j["a"])(regeneratorRuntime.mark((function n(){var i;return regeneratorRuntime.wrap((function(n){while(1)switch(n.prev=n.next){case 0:return n.next=2,e.get(e.id(t),{select:"previewUrl"});case 2:return i=n.sent,n.abrupt("return",i.previewUrl);case 4:case"end":return n.stop()}}),n)})))()},search:function(e,n){var i=this;return Object(j["a"])(regeneratorRuntime.mark((function r(){return regeneratorRuntime.wrap((function(r){while(1)switch(r.prev=r.next){case 0:if(!e){r.next=2;break}return r.abrupt("return",t.post("pages/"+i.id(e)+"/children/search?select=id,title,hasChildren",n));case 2:return r.abrupt("return",t.post("site/children/search?select=id,title,hasChildren",n));case 3:case"end":return r.stop()}}),r)})))()},update:function(e,n){var i=this;return Object(j["a"])(regeneratorRuntime.mark((function r(){return regeneratorRuntime.wrap((function(r){while(1)switch(r.prev=r.next){case 0:return r.abrupt("return",t.patch("pages/"+i.id(e),n));case 1:case"end":return r.stop()}}),r)})))()},url:function(t,e){var n=null===t?"pages":"pages/"+t.replace(/\//g,"+");return e&&(n+="/"+e),n}}},K=(n("a15b"),n("b64b"),n("d3b7"),n("8a79"),n("2ca0"),function(t){return{running:0,request:function(e,n){var i=arguments,r=this;return Object(j["a"])(regeneratorRuntime.mark((function s(){var a,o,u,l,c,p;return regeneratorRuntime.wrap((function(s){while(1)switch(s.prev=s.next){case 0:return a=i.length>2&&void 0!==i[2]&&i[2],n=Object.assign(n||{},{credentials:"same-origin",cache:"no-store",headers:Object(I["a"])({"x-requested-with":"xmlhttprequest","content-type":"application/json"},n.headers)}),t.methodOverwrite&&"GET"!==n.method&&"POST"!==n.method&&(n.headers["x-http-method-override"]=n.method,n.method="POST"),n=t.onPrepare(n),o=e+"/"+JSON.stringify(n),t.onStart(o,a),r.running++,s.next=9,fetch([t.endpoint,e].join(t.endpoint.endsWith("/")||e.startsWith("/")?"":"/"),n);case 9:return u=s.sent,s.next=12,u.text();case 12:l=s.sent,s.prev=13,s.prev=14,c=JSON.parse(l),s.next=21;break;case 18:throw s.prev=18,s.t0=s["catch"](14),new Error("The JSON response from the API could not be parsed. Please check your API connection.");case 21:if(!(u.status<200||u.status>299)){s.next=23;break}throw c;case 23:if(!c.status||"error"!==c.status){s.next=25;break}throw c;case 25:return p=c,c.data&&c.type&&"model"===c.type&&(p=c.data),r.running--,t.onComplete(o),t.onSuccess(c),s.abrupt("return",p);case 33:throw s.prev=33,s.t1=s["catch"](13),r.running--,t.onComplete(o),t.onError(s.t1),s.t1;case 39:case"end":return s.stop()}}),s,null,[[13,33],[14,18]])})))()},get:function(t,e,n){var i=arguments,r=this;return Object(j["a"])(regeneratorRuntime.mark((function s(){var a;return regeneratorRuntime.wrap((function(s){while(1)switch(s.prev=s.next){case 0:return a=i.length>3&&void 0!==i[3]&&i[3],e&&(t+="?"+Object.keys(e).filter((function(t){return void 0!==e[t]&&null!==e[t]})).map((function(t){return t+"="+e[t]})).join("&")),s.abrupt("return",r.request(t,Object.assign(n||{},{method:"GET"}),a));case 3:case"end":return s.stop()}}),s)})))()},post:function(t,e,n){var i=arguments,r=this;return Object(j["a"])(regeneratorRuntime.mark((function s(){var a,o;return regeneratorRuntime.wrap((function(s){while(1)switch(s.prev=s.next){case 0:return a=i.length>3&&void 0!==i[3]?i[3]:"POST",o=i.length>4&&void 0!==i[4]&&i[4],s.abrupt("return",r.request(t,Object.assign(n||{},{method:a,body:JSON.stringify(e)}),o));case 3:case"end":return s.stop()}}),s)})))()},patch:function(t,e,n){var i=arguments,r=this;return Object(j["a"])(regeneratorRuntime.mark((function s(){var a;return regeneratorRuntime.wrap((function(s){while(1)switch(s.prev=s.next){case 0:return a=i.length>3&&void 0!==i[3]&&i[3],s.abrupt("return",r.post(t,e,n,"PATCH",a));case 2:case"end":return s.stop()}}),s)})))()},delete:function(t,e,n){var i=arguments,r=this;return Object(j["a"])(regeneratorRuntime.mark((function s(){var a;return regeneratorRuntime.wrap((function(s){while(1)switch(s.prev=s.next){case 0:return a=i.length>3&&void 0!==i[3]&&i[3],s.abrupt("return",r.post(t,e,n,"DELETE",a));case 2:case"end":return s.stop()}}),s)})))()}}}),V=(n("a4d3"),n("e01a"),function(t){return{list:function(e){return Object(j["a"])(regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){while(1)switch(n.prev=n.next){case 0:return n.abrupt("return",t.get("roles",e));case 1:case"end":return n.stop()}}),n)})))()},get:function(e){return Object(j["a"])(regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){while(1)switch(n.prev=n.next){case 0:return n.abrupt("return",t.get("roles/"+e));case 1:case"end":return n.stop()}}),n)})))()},options:function(t){var e=this;return Object(j["a"])(regeneratorRuntime.mark((function n(){var i;return regeneratorRuntime.wrap((function(n){while(1)switch(n.prev=n.next){case 0:return n.next=2,e.list(t);case 2:return i=n.sent,n.abrupt("return",i.data.map((function(t){return{info:t.description||"(".concat(F["a"].i18n.translate("role.description.placeholder"),")"),text:t.title,value:t.name}})));case 4:case"end":return n.stop()}}),n)})))()}}}),Y=function(t){return{get:function(){var e=arguments;return Object(j["a"])(regeneratorRuntime.mark((function n(){var i;return regeneratorRuntime.wrap((function(n){while(1)switch(n.prev=n.next){case 0:return i=e.length>0&&void 0!==e[0]?e[0]:{view:"panel"},n.abrupt("return",t.get("system",i));case 2:case"end":return n.stop()}}),n)})))()},install:function(e){return Object(j["a"])(regeneratorRuntime.mark((function n(){var i;return regeneratorRuntime.wrap((function(n){while(1)switch(n.prev=n.next){case 0:return n.next=2,t.post("system/install",e);case 2:return i=n.sent,n.abrupt("return",i.user);case 4:case"end":return n.stop()}}),n)})))()},register:function(e){return Object(j["a"])(regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){while(1)switch(n.prev=n.next){case 0:return n.abrupt("return",t.post("system/register",e));case 1:case"end":return n.stop()}}),n)})))()}}},W=function(t){return{blueprint:function(){return Object(j["a"])(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.abrupt("return",t.get("site/blueprint"));case 1:case"end":return e.stop()}}),e)})))()},blueprints:function(){return Object(j["a"])(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.abrupt("return",t.get("site/blueprints"));case 1:case"end":return e.stop()}}),e)})))()},changeTitle:function(e){return Object(j["a"])(regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){while(1)switch(n.prev=n.next){case 0:return n.abrupt("return",t.patch("site/title",{title:e}));case 1:case"end":return n.stop()}}),n)})))()},children:function(e){return Object(j["a"])(regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){while(1)switch(n.prev=n.next){case 0:return n.abrupt("return",t.post("site/children/search",e));case 1:case"end":return n.stop()}}),n)})))()},get:function(){var e=arguments;return Object(j["a"])(regeneratorRuntime.mark((function n(){var i;return regeneratorRuntime.wrap((function(n){while(1)switch(n.prev=n.next){case 0:return i=e.length>0&&void 0!==e[0]?e[0]:{view:"panel"},n.abrupt("return",t.get("site",i));case 2:case"end":return n.stop()}}),n)})))()},options:function(){return Object(j["a"])(regeneratorRuntime.mark((function e(){var n,i,r;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,t.get("site",{select:"options"});case 2:return n=e.sent,i=n.options,r=[],r.push({click:"rename",icon:"title",text:F["a"].i18n.translate("rename"),disabled:!i.changeTitle}),e.abrupt("return",r);case 7:case"end":return e.stop()}}),e)})))()},update:function(e){return Object(j["a"])(regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){while(1)switch(n.prev=n.next){case 0:return n.abrupt("return",t.post("site",e));case 1:case"end":return n.stop()}}),n)})))()}}},J=function(t){return{list:function(){return Object(j["a"])(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.abrupt("return",t.get("translations"));case 1:case"end":return e.stop()}}),e)})))()},get:function(e){return Object(j["a"])(regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){while(1)switch(n.prev=n.next){case 0:return n.abrupt("return",t.get("translations/"+e));case 1:case"end":return n.stop()}}),n)})))()},options:function(){var t=this;return Object(j["a"])(regeneratorRuntime.mark((function e(){var n,i;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,t.list();case 2:return n=e.sent,i=n.data.map((function(t){return{value:t.id,text:t.name}})),e.abrupt("return",i);case 5:case"end":return e.stop()}}),e)})))()}}},G=function(t){return{blueprint:function(e){return Object(j["a"])(regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){while(1)switch(n.prev=n.next){case 0:return n.abrupt("return",t.get("users/"+e+"/blueprint"));case 1:case"end":return n.stop()}}),n)})))()},blueprints:function(e,n){return Object(j["a"])(regeneratorRuntime.mark((function i(){return regeneratorRuntime.wrap((function(i){while(1)switch(i.prev=i.next){case 0:return i.abrupt("return",t.get("users/"+e+"/blueprints",{section:n}));case 1:case"end":return i.stop()}}),i)})))()},breadcrumb:function(t){return[{link:"/users/"+t.id,label:t.username}]},changeEmail:function(e,n){return Object(j["a"])(regeneratorRuntime.mark((function i(){return regeneratorRuntime.wrap((function(i){while(1)switch(i.prev=i.next){case 0:return i.abrupt("return",t.patch("users/"+e+"/email",{email:n}));case 1:case"end":return i.stop()}}),i)})))()},changeLanguage:function(e,n){return Object(j["a"])(regeneratorRuntime.mark((function i(){return regeneratorRuntime.wrap((function(i){while(1)switch(i.prev=i.next){case 0:return i.abrupt("return",t.patch("users/"+e+"/language",{language:n}));case 1:case"end":return i.stop()}}),i)})))()},changeName:function(e,n){return Object(j["a"])(regeneratorRuntime.mark((function i(){return regeneratorRuntime.wrap((function(i){while(1)switch(i.prev=i.next){case 0:return i.abrupt("return",t.patch("users/"+e+"/name",{name:n}));case 1:case"end":return i.stop()}}),i)})))()},changePassword:function(e,n){return Object(j["a"])(regeneratorRuntime.mark((function i(){return regeneratorRuntime.wrap((function(i){while(1)switch(i.prev=i.next){case 0:return i.abrupt("return",t.patch("users/"+e+"/password",{password:n}));case 1:case"end":return i.stop()}}),i)})))()},changeRole:function(e,n){return Object(j["a"])(regeneratorRuntime.mark((function i(){return regeneratorRuntime.wrap((function(i){while(1)switch(i.prev=i.next){case 0:return i.abrupt("return",t.patch("users/"+e+"/role",{role:n}));case 1:case"end":return i.stop()}}),i)})))()},create:function(e){return Object(j["a"])(regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){while(1)switch(n.prev=n.next){case 0:return n.abrupt("return",t.post("users",e));case 1:case"end":return n.stop()}}),n)})))()},delete:function(e){return Object(j["a"])(regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){while(1)switch(n.prev=n.next){case 0:return n.abrupt("return",t.delete("users/"+e));case 1:case"end":return n.stop()}}),n)})))()},deleteAvatar:function(e){return Object(j["a"])(regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){while(1)switch(n.prev=n.next){case 0:return n.abrupt("return",t.delete("users/"+e+"/avatar"));case 1:case"end":return n.stop()}}),n)})))()},link:function(t,e){return"/"+this.url(t,e)},list:function(e){var n=this;return Object(j["a"])(regeneratorRuntime.mark((function i(){return regeneratorRuntime.wrap((function(i){while(1)switch(i.prev=i.next){case 0:return i.abrupt("return",t.post(n.url(null,"search"),e));case 1:case"end":return i.stop()}}),i)})))()},get:function(e,n){return Object(j["a"])(regeneratorRuntime.mark((function i(){return regeneratorRuntime.wrap((function(i){while(1)switch(i.prev=i.next){case 0:return i.abrupt("return",t.get("users/"+e,n));case 1:case"end":return i.stop()}}),i)})))()},options:function(e){var n=this;return Object(j["a"])(regeneratorRuntime.mark((function i(){var r,s,a;return regeneratorRuntime.wrap((function(i){while(1)switch(i.prev=i.next){case 0:return i.next=2,t.get(n.url(e),{select:"options"});case 2:return r=i.sent,s=r.options,a=[],a.push({click:"rename",icon:"title",text:F["a"].i18n.translate("user.changeName"),disabled:!s.changeName}),a.push({click:"email",icon:"email",text:F["a"].i18n.translate("user.changeEmail"),disabled:!s.changeEmail}),a.push({click:"role",icon:"bolt",text:F["a"].i18n.translate("user.changeRole"),disabled:!s.changeRole}),a.push({click:"password",icon:"key",text:F["a"].i18n.translate("user.changePassword"),disabled:!s.changePassword}),a.push({click:"language",icon:"globe",text:F["a"].i18n.translate("user.changeLanguage"),disabled:!s.changeLanguage}),a.push({click:"remove",icon:"trash",text:F["a"].i18n.translate("user.delete"),disabled:!s.delete}),i.abrupt("return",a);case 12:case"end":return i.stop()}}),i)})))()},roles:function(e){var n=this;return Object(j["a"])(regeneratorRuntime.mark((function i(){var r;return regeneratorRuntime.wrap((function(i){while(1)switch(i.prev=i.next){case 0:return i.next=2,t.get(n.url(e,"roles"));case 2:return r=i.sent,i.abrupt("return",r.data.map((function(t){return{info:t.description||"(".concat(F["a"].i18n.translate("role.description.placeholder"),")"),text:t.title,value:t.name}})));case 4:case"end":return i.stop()}}),i)})))()},search:function(e){return Object(j["a"])(regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){while(1)switch(n.prev=n.next){case 0:return n.abrupt("return",t.post("users/search",e));case 1:case"end":return n.stop()}}),n)})))()},update:function(e,n){return Object(j["a"])(regeneratorRuntime.mark((function i(){return regeneratorRuntime.wrap((function(i){while(1)switch(i.prev=i.next){case 0:return i.abrupt("return",t.patch("users/"+e,n));case 1:case"end":return i.stop()}}),i)})))()},url:function(t,e){var n=t?"users/"+t:"users";return e&&(n+="/"+e),n}}},Z=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e={endpoint:"/api",methodOverwrite:!0,onPrepare:function(t){return t},onStart:function(){},onComplete:function(){},onSuccess:function(){},onError:function(t){throw window.console.log(t.message),t}},n=Object(I["a"])(Object(I["a"])({},e),t.config||{}),i=Object(I["a"])(Object(I["a"])(Object(I["a"])({},n),K(n)),t);return i.auth=M(i),i.files=U(i),i.languages=z(i),i.pages=H(i),i.roles=V(i),i.system=Y(i),i.site=W(i),i.translations=J(i),i.users=G(i),i.files.rename=i.files.changeName,i.pages.slug=i.pages.changeSlug,i.pages.status=i.pages.changeStatus,i.pages.template=i.pages.changeTemplate,i.pages.title=i.pages.changeTitle,i.site.title=i.site.changeTitle,i.system.info=i.system.get,i},X={install:function(t,e){t.prototype.$api=t.$api=Z({config:{endpoint:B.api,onComplete:function(n){t.$api.requests=t.$api.requests.filter((function(t){return t!==n})),0===t.$api.requests.length&&e.dispatch("isLoading",!1)},onError:function(t){B.debug&&window.console.error(t),403!==t.code||"Unauthenticated"!==t.message&&"access.panel"!==t.key||e.dispatch("user/logout",!0)},onPrepare:function(t){return e.state.languages.current&&(t.headers["x-language"]=e.state.languages.current.code),t.headers["x-csrf"]=window.panel.csrf,t},onStart:function(n){var i=arguments.length>1&&void 0!==arguments[1]&&arguments[1];!1===i&&e.dispatch("isLoading",!0),t.$api.requests.push(n)},onSuccess:function(){clearInterval(t.$api.ping),t.$api.ping=setInterval(t.$api.auth.user,3e5)}},ping:null,requests:[]}),t.$api.ping=setInterval(t.$api.auth.user,3e5)}},Q={install:function(t){t.filter("t",(function(t){return t}))}},tt=(n("caad"),{install:function(t){t.prototype.$events=new t({data:function(){return{entered:null}},created:function(){window.addEventListener("online",this.online),window.addEventListener("offline",this.offline),window.addEventListener("dragenter",this.dragenter,!1),window.addEventListener("dragover",this.prevent,!1),window.addEventListener("dragexit",this.prevent,!1),window.addEventListener("dragleave",this.dragleave,!1),window.addEventListener("drop",this.drop,!1),window.addEventListener("keydown",this.keydown,!1),window.addEventListener("keyup",this.keyup,!1),document.addEventListener("click",this.click,!1)},destroyed:function(){window.removeEventListener("online",this.online),window.removeEventListener("offline",this.offline),window.removeEventListener("dragenter",this.dragenter,!1),window.removeEventListener("dragover",this.prevent,!1),window.removeEventListener("dragexit",this.prevent,!1),window.removeEventListener("dragleave",this.dragleave,!1),window.removeEventListener("drop",this.drop,!1),window.removeEventListener("keydown",this.keydown,!1),window.removeEventListener("keyup",this.keyup,!1),document.removeEventListener("click",this.click,!1)},methods:{click:function(t){this.$emit("click",t)},drop:function(t){this.prevent(t),this.$emit("drop",t)},dragenter:function(t){this.entered=t.target,this.prevent(t),this.$emit("dragenter",t)},dragleave:function(t){this.prevent(t),this.entered===t.target&&this.$emit("dragleave",t)},keydown:function(t){var e=["keydown"];(t.metaKey||t.ctrlKey)&&e.push("cmd"),!0===t.altKey&&e.push("alt"),!0===t.shiftKey&&e.push("shift");var n=this.$helper.string.lcfirst(t.key),i={escape:"esc",arrowUp:"up",arrowDown:"down",arrowLeft:"left",arrowRight:"right"};i[n]&&(n=i[n]),!1===["alt","control","shift","meta"].includes(n)&&e.push(n),this.$emit(e.join("."),t),this.$emit("keydown",t)},keyup:function(t){this.$emit("keyup",t)},online:function(t){this.$emit("online",t)},offline:function(t){this.$emit("offline",t)},prevent:function(t){t.stopPropagation(),t.preventDefault()}}})}}),et=n("1dce"),nt=n.n(et),it=(n("4d63"),n("25f0"),n("1276"),function(t){if(void 0!==t)return JSON.parse(JSON.stringify(t))}),rt=function(t,e){var n=null;return function(){var i=this,r=arguments;clearTimeout(n),n=setTimeout((function(){t.apply(i,r)}),e)}},st=function(t){return void 0!==F["a"].options.components[t]},at=(n("2532"),function(t){return!!t.dataTransfer&&(!!t.dataTransfer.types&&(!0===t.dataTransfer.types.includes("Files")&&!1===t.dataTransfer.types.includes("text/plain")))}),ot=function(t,e){t=String(t);var n="";e=(e||2)-t.length;while(n.length0&&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]),r=100;return 0!==n&&0!==i&&(r=100/n*i),r+"%"}),lt=(n("498a"),function(t){var e=arguments.length>1&&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&&Object.keys(e).forEach((function(n){var i="/"!==n.substr(0,1),r=n.substring(1,n.length-1),s=i?n:r;t=t.replace(new RegExp(RegExp.escape(s),"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}),ct=(n("466d"),function(t){t=t||{};var e=t.desc?-1:1,n=-e,i=/^0/,r=/\s+/g,s=/^\s+|\s+$/g,a=/[^\x00-\x80]/,o=/^0x[0-9a-f]+$/i,u=/(0x[\da-fA-F]+|(^[\+\-]?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?(?=\D|\s|$))|\d+)/g,l=/(^([\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 p(""+t).replace(s,"")}:function(t){return(""+t).replace(s,"")};function p(t){return t.toLocaleLowerCase?t.toLocaleLowerCase():t.toLowerCase()}function d(t){return t.replace(u,"\0$1\0").replace(/\0$/,"").replace(/^\0/,"").split("\0")}function f(t,e){return(!t.match(i)||1===e)&&parseFloat(t)||t.replace(r," ").replace(s,"")||0}return function(t,i){var r=c(t),s=c(i);if(!r&&!s)return 0;if(!r&&s)return n;if(r&&!s)return e;var u=d(r),p=d(s),h=parseInt(r.match(o),16)||1!==u.length&&Date.parse(r),m=parseInt(s.match(o),16)||h&&s.match(l)&&Date.parse(s)||null;if(m){if(hm)return e}for(var g=u.length,b=p.length,v=0,k=Math.max(g,b);v0)return e;if(_<0)return n;if(v===k-1)return 0}else{if($y)return e}}return 0}}),pt={camelToKebab:function(t){return t.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()},hasEmoji:function(t){if("string"!==typeof t)return!1;var e=t.match(/(?:[\u2700-\u27bf]|(?:\ud83c[\udde6-\uddff]){2}|[\ud800-\udbff][\udc00-\udfff]|[\u0023-\u0039]\ufe0f?\u20e3|\u3299|\u3297|\u303d|\u3030|\u24c2|\ud83c[\udd70-\udd71]|\ud83c[\udd7e-\udd7f]|\ud83c\udd8e|\ud83c[\udd91-\udd9a]|\ud83c[\udde6-\uddff]|[\ud83c\ude01-\ude02]|\ud83c\ude1a|\ud83c\ude2f|[\ud83c\ude32-\ude3a]|[\ud83c\ude50-\ude51]|\u203c|\u2049|[\u25aa-\u25ab]|\u25b6|\u25c0|[\u25fb-\u25fe]|\u00a9|\u00ae|\u2122|\u2139|\ud83c\udc04|[\u2600-\u26FF]|\u2b05|\u2b06|\u2b07|\u2b1b|\u2b1c|\u2b50|\u2b55|\u231a|\u231b|\u2328|\u23cf|[\u23e9-\u23f3]|[\u23f8-\u23fa]|\ud83c\udccf|\u2934|\u2935|[\u2190-\u21ff])/i);return null!==e&&null!==e.length},lcfirst:function(t){var e=String(t);return e.charAt(0).toLowerCase()+e.substr(1)},ucfirst:function(t){var e=String(t);return e.charAt(0).toUpperCase()+e.substr(1)}},dt=function(t,e){var n={url:"/",field:"file",method:"POST",accept:"text",attributes:{},complete:function(){},error:function(){},success:function(){},progress:function(){}},i=Object.assign(n,e),r=new FormData;r.append(i.field,t,t.name),i.attributes&&Object.keys(i.attributes).forEach((function(t){r.append(t,i.attributes[t])}));var s=new XMLHttpRequest,a=function(e){if(e.lengthComputable&&i.progress){var n=Math.max(0,Math.min(100,e.loaded/e.total*100));i.progress(s,t,Math.ceil(n))}};s.upload.addEventListener("loadstart",a),s.upload.addEventListener("progress",a),s.addEventListener("load",(function(e){var n=null;try{n=JSON.parse(e.target.response)}catch(r){n={status:"error",message:"The file could not be uploaded"}}n.status&&"error"===n.status?i.error(s,t,n):(i.success(s,t,n),i.progress(s,t,100))})),s.addEventListener("error",(function(e){var n=JSON.parse(e.target.response);i.error(s,t,n),i.progress(s,t,100)})),s.open("POST",i.url,!0),i.headers&&Object.keys(i.headers).forEach((function(t){var e=i.headers[t];s.setRequestHeader(t,e)})),s.send(r)},ft={install:function(t){Array.prototype.sortBy=function(e){var n=t.prototype.$helper.sort(),i=e.split(" "),r=i[0],s=i[1]||"asc";return this.sort((function(t,e){var i=String(t[r]).toLowerCase(),a=String(e[r]).toLowerCase();return"desc"===s?n(a,i):n(i,a)}))},RegExp.escape=function(t){return t.replace(new RegExp("[-/\\\\^$*+?.()[\\]{}]","gu"),"\\$&")},t.prototype.$helper={clone:it,isComponent:st,isUploadEvent:at,debounce:rt,pad:ot,ratio:ut,slug:lt,sort:ct,string:pt,upload:dt}}},ht=(n("64e4"),{}),mt=Object(y["a"])(ht,i,r,!1,null,null,null),gt=(mt.exports,function(){var t=this,e=t.$createElement,n=t._self._c||e;return t.isOpen?n("div",{staticClass:"k-dialog",on:{mousedown:t.cancel}},[n("div",{staticClass:"k-dialog-box",attrs:{"data-size":t.size},on:{mousedown:function(t){t.stopPropagation()}}},[t.notification?n("div",{staticClass:"k-dialog-notification",attrs:{"data-theme":t.notification.type}},[n("p",[t._v(t._s(t.notification.message))]),n("k-button",{attrs:{icon:"cancel"},on:{click:function(e){t.notification=null}}})],1):t._e(),n("div",{staticClass:"k-dialog-body"},[t._t("default")],2),t.$slots["footer"]||t.cancelButton||t.submitButton?n("footer",{staticClass:"k-dialog-footer"},[t._t("footer",[n("k-button-group",[n("span",[t.cancelButton?n("k-button",{staticClass:"k-dialog-button-cancel",attrs:{icon:"cancel"},on:{click:t.cancel}},[t._v("\n "+t._s(t.cancelButtonLabel)+"\n ")]):t._e()],1),n("span",[t.submitButtonConfig?n("k-button",{staticClass:"k-dialog-button-submit",attrs:{icon:t.icon,theme:t.theme},on:{click:t.submit}},[t._v("\n "+t._s(t.submitButtonLabel)+"\n ")]):t._e()],1)])])],2):t._e()])]):t._e()}),bt=[],vt={props:{cancelButton:{type:[String,Boolean],default:!0},icon:{type:String,default:"check"},size:{type:String,default:"default"},submitButton:{type:[String,Boolean],default:!0},theme:String,visible:Boolean},data:function(){return{notification:null,isOpen:this.visible,scrollTop:0}},computed:{cancelButtonLabel:function(){return!1!==this.cancelButton&&(!0===this.cancelButton||0===this.cancelButton.length?this.$t("cancel"):this.cancelButton)},submitButtonConfig:function(){return void 0!==this.$attrs["button"]?this.$attrs["button"]:void 0===this.submitButton||this.submitButton},submitButtonLabel:function(){return!0===this.submitButton||0===this.submitButton.length?this.$t("confirm"):this.submitButton}},created:function(){this.$events.$on("keydown.esc",this.close,!1)},destroyed:function(){this.$events.$off("keydown.esc",this.close,!1)},mounted:function(){!0===this.isOpen&&this.$emit("open")},methods:{storeScrollPosition:function(){var t=document.querySelector(".k-panel-view");t&&t.scrollTop?this.scrollTop=t.scrollTop:this.scrollTop=0},restoreScrollPosition:function(){var t=document.querySelector(".k-panel-view");t&&t.scrollTop&&(t.scrollTop=this.scrollTop)},open:function(){var t=this;this.storeScrollPosition(),this.$store.dispatch("dialog",!0),this.notification=null,this.isOpen=!0,this.$emit("open"),this.$events.$on("keydown.esc",this.close),this.$nextTick((function(){t.$el&&(t.focus(),document.body.addEventListener("focus",(function(e){!1===t.$el.contains(e.target)&&t.focus()}),!0))}))},close:function(){this.notification=null,this.isOpen=!1,this.$emit("close"),this.$events.$off("keydown.esc",this.close),this.$store.dispatch("dialog",null),this.restoreScrollPosition()},cancel:function(){this.$emit("cancel"),this.close()},focus:function(){if(this.$el&&this.$el.querySelector){var t=this.$el.querySelector("[autofocus], [data-autofocus], input, textarea, select, .k-dialog-button-submit");if(t||(t=this.$el.querySelector(".k-dialog-button-cancel")),t)return void t.focus()}},error:function(t){this.notification={message:t,type:"error"}},submit:function(){this.$emit("submit")},success:function(t){this.notification={message:t,type:"success"}}}},kt=vt,$t=(n("a5f3"),Object(y["a"])(kt,gt,bt,!1,null,null,null)),yt=$t.exports,_t=function(){var t=this,e=t.$createElement,n=t._self._c||e;return t.notification?n("k-dialog",{ref:"dialog",staticClass:"k-error-dialog",attrs:{visible:!0},on:{close:t.exit,open:t.enter}},[n("k-text",[t._v(t._s(t.notification.message))]),t.notification.details&&Object.keys(t.notification.details).length?n("dl",{staticClass:"k-error-details"},[t._l(t.notification.details,(function(e,i){return[n("dt",{key:"detail-label-"+i},[t._v(t._s(e.label))]),n("dd",{key:"detail-message-"+i},["object"===typeof e.message?[n("ul",t._l(e.message,(function(e,i){return n("li",{key:i},[t._v("\n "+t._s(e)+"\n ")])})),0)]:[t._v("\n "+t._s(e.message)+"\n ")]],2)]}))],2):t._e(),n("k-button-group",{attrs:{slot:"footer"},slot:"footer"},[n("k-button",{attrs:{icon:"check"},on:{click:t.close}},[t._v("\n "+t._s(t.$t("confirm"))+"\n ")])],1)],1):t._e()},wt=[],xt={mixins:[S],computed:{notification:function(){var t=this.$store.state.notification;return"error"===t.type?t:null}},methods:{enter:function(){var t=this;this.$nextTick((function(){t.$el.querySelector(".k-dialog-footer .k-button").focus()}))},exit:function(){this.$store.dispatch("notification/close")}}},Ot=xt,jt=(n("7737"),Object(y["a"])(Ot,_t,wt,!1,null,null,null)),St=jt.exports,Ct=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-remove-dialog",{ref:"dialog",attrs:{text:t.$t("file.delete.confirm",{filename:t.filename})},on:{submit:t.submit}})},Et=[],Rt={mixins:[S],data:function(){return{id:null,parent:null,filename:null}},methods:{open:function(t,e){var n=this;return Object(j["a"])(regeneratorRuntime.mark((function i(){var r;return regeneratorRuntime.wrap((function(i){while(1)switch(i.prev=i.next){case 0:return i.prev=0,i.next=3,n.$api.files.get(t,e);case 3:r=i.sent,n.id=r.id,n.filename=r.filename,n.parent=t,n.$refs.dialog.open(),i.next=13;break;case 10:i.prev=10,i.t0=i["catch"](0),n.$store.dispatch("notification/error",i.t0);case 13:case"end":return i.stop()}}),i,null,[[0,10]])})))()},submit:function(){var t=this;return Object(j["a"])(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,t.$api.files.delete(t.parent,t.filename);case 3:t.$store.dispatch("content/remove","files/"+t.id),t.$store.dispatch("notification/success",":)"),t.$events.$emit("file.delete",t.id),t.$emit("success"),t.$refs.dialog.close(),e.next=13;break;case 10:e.prev=10,e.t0=e["catch"](0),t.$refs.dialog.error(e.t0.message);case 13:case"end":return e.stop()}}),e,null,[[0,10]])})))()}}},Tt=Rt,It=Object(y["a"])(Tt,Ct,Et,!1,null,null,null),Lt=It.exports,At=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-form-dialog",{ref:"dialog",attrs:{fields:t.fields,"submit-button":t.$t("rename")},on:{input:function(e){t.file.name=t.sluggify(t.file.name)},submit:t.submit},model:{value:t.file,callback:function(e){t.file=e},expression:"file"}})},Bt=[],qt={mixins:[S],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;return Object(j["a"])(regeneratorRuntime.mark((function i(){return regeneratorRuntime.wrap((function(i){while(1)switch(i.prev=i.next){case 0:return i.prev=0,i.next=3,n.$api.files.get(t,e,{select:["id","filename","name","extension"]});case 3:n.file=i.sent,n.parent=t,n.$refs.dialog.open(),i.next=11;break;case 8:i.prev=8,i.t0=i["catch"](0),n.$store.dispatch("notification/error",i.t0);case 11:case"end":return i.stop()}}),i,null,[[0,8]])})))()},sluggify:function(t){return this.$helper.slug(t,[this.slugs,this.system.ascii],"@._-")},submit:function(){var t=this;return Object(j["a"])(regeneratorRuntime.mark((function e(){var n;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:if(t.file.name=t.file.name.trim(),0!==t.file.name.length){e.next=4;break}return t.$refs.dialog.error(t.$t("error.file.changeName.empty")),e.abrupt("return");case 4:return e.prev=4,e.next=7,t.$api.files.changeName(t.parent,t.file.filename,t.file.name);case 7:n=e.sent,t.$store.dispatch("content/move",["files/"+t.file.id,"files/"+n.id]),t.$store.dispatch("notification/success",":)"),t.$emit("success",n),t.$events.$emit("file.changeName",n),t.$refs.dialog.close(),e.next=18;break;case 15:e.prev=15,e.t0=e["catch"](4),t.$refs.dialog.error(e.t0.message);case 18:case"end":return e.stop()}}),e,null,[[4,15]])})))()}}},Nt=qt,Pt=Object(y["a"])(Nt,At,Bt,!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",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.options.search?n("k-input",{staticClass:"k-dialog-search",attrs:{autofocus:!0,placeholder:t.$t("search")+" …",type:"text",icon:"search"},model:{value:t.search,callback:function(e){t.search=e},expression:"search"}}):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)}}},[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-pagination",t._b({staticClass:"k-dialog-pagination",attrs:{details:!0,dropdown:!1,align:"center"},on:{paginate:t.paginate}},"k-pagination",t.pagination,!1))]:n("k-empty",{attrs:{icon:"image"}},[t._v("\n "+t._s(t.$t("dialog.files.empty"))+"\n ")])]],2)},Ft=[],Ut=(n("07ac"),{data:function(){return{models:[],issue:null,selected:{},options:{endpoint:null,max:null,multiple:!0,parent:null,selected:[],search:!0},search:null,pagination:{limit:20,page:1,total:0}}},computed:{multiple:function(){return!0===this.options.multiple&&1!==this.options.max},checkedIcon:function(){return!0===this.multiple?"check":"circle-filled"}},watch:{search:rt((function(){this.pagination.page=0,this.fetch()}),200)},methods:{fetch:function(){var t=this,e=Object(I["a"])({page:this.pagination.page,search:this.search},this.fetchData||{});return this.$api.get(this.options.endpoint,e).then((function(e){t.models=e.data,t.pagination=e.pagination,t.onFetched&&t.onFetched(e)})).catch((function(e){t.models=[],t.issue=e.message}))},open:function(t,e){var n=this;this.pagination.page=0,this.search=null;var i=!0;Array.isArray(t)?(this.models=t,i=!1):(this.models=[],e=t),this.options=Object(I["a"])(Object(I["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()},paginate:function(t){this.pagination.page=t.page,this.pagination.limit=t.limit,this.fetch()},submit:function(){this.$emit("submit",Object.values(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<=Object.keys(this.selected).length||this.$set(this.selected,t.id,t):this.$delete(this.selected,t.id)}}}),zt={mixins:[Ut]},Ht=zt,Kt=(n("bf53"),Object(y["a"])(Ht,Mt,Ft,!1,null,null,null)),Vt=Kt.exports,Yt=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-dialog",t._g(t._b({ref:"dialog"},"k-dialog",t.$props,!1),t.$listeners),[n("k-form",{ref:"form",attrs:{fields:t.fields,novalidate:t.novalidate},on:{input:function(e){return t.$emit("input",e)},submit:function(e){return t.$emit("submit",e)}},model:{value:t.value,callback:function(e){t.value=e},expression:"value"}})],1)},Wt=[],Jt={mixins:[S],props:{fields:{type:[Array,Object],default:function(){return[]}},novalidate:{type:Boolean,default:!0},size:{type:String,default:"medium"},submitButton:{type:[String,Boolean],default:function(){return this.$t("save")}},theme:{type:String,default:"positive"},value:{type:Object,default:function(){return{}}}}},Gt=Jt,Zt=Object(y["a"])(Gt,Yt,Wt,!1,null,null,null),Xt=Zt.exports,Qt=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-form-dialog",{ref:"dialog",attrs:{fields:t.fields,"submit-button":t.$t("language.create")},on:{submit:t.submit},model:{value:t.language,callback:function(e){t.language=e},expression:"language"}})},te=[],ee={mixins:[S],data:function(){return{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=this.$helper.slug(t,[this.system.ascii])}},methods:{onNameChanges:function(t){this.language.code=this.$helper.slug(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;return Object(j["a"])(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return t.language.locale&&(t.language.locale=t.language.locale.trim()||null),e.prev=1,e.next=4,t.$api.languages.create({name:t.language.name,code:t.language.code,direction:t.language.direction,locale:t.language.locale});case 4:t.$store.dispatch("languages/load"),t.success({message:":)",event:"language.create"}),e.next=11;break;case 8:e.prev=8,e.t0=e["catch"](1),t.$refs.dialog.error(e.t0.message);case 11:case"end":return e.stop()}}),e,null,[[1,8]])})))()}}},ne=ee,ie=Object(y["a"])(ne,Qt,te,!1,null,null,null),re=ie.exports,se=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-remove-dialog",{ref:"dialog",attrs:{text:t.$t("language.delete.confirm",{name:t.language.name})},on:{submit:t.submit}})},ae=[],oe={mixins:[S],data:function(){return{language:{name:null}}},methods:{open:function(t){var e=this;return Object(j["a"])(regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){while(1)switch(n.prev=n.next){case 0:return n.prev=0,n.next=3,e.$api.languages.get(t);case 3:e.language=n.sent,e.$refs.dialog.open(),n.next=10;break;case 7:n.prev=7,n.t0=n["catch"](0),e.$store.dispatch("notification/error",n.t0);case 10:case"end":return n.stop()}}),n,null,[[0,7]])})))()},submit:function(){var t=this;return Object(j["a"])(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,t.$api.languages.delete(t.language.code);case 3:t.$store.dispatch("languages/load"),t.success({message:t.$t("language.deleted"),event:"language.delete"}),e.next=10;break;case 7:e.prev=7,e.t0=e["catch"](0),t.$refs.dialog.error(e.t0.message);case 10:case"end":return e.stop()}}),e,null,[[0,7]])})))()}}},ue=oe,le=Object(y["a"])(ue,se,ae,!1,null,null,null),ce=le.exports,pe=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-form-dialog",{ref:"dialog",attrs:{fields:t.fields,size:"medium"},on:{submit:t.submit},model:{value:t.language,callback:function(e){t.language=e},expression:"language"}})},de=[],fe=n("53ca"),he={mixins:[re],computed:{fields:function(){var t=re.computed.fields.apply(this);return t.code.disabled=!0,"object"===Object(fe["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;return Object(j["a"])(regeneratorRuntime.mark((function n(){var i;return regeneratorRuntime.wrap((function(n){while(1)switch(n.prev=n.next){case 0:return n.prev=0,n.next=3,e.$api.languages.get(t);case 3:e.language=n.sent,i=Object.keys(e.language.locale),1===i.length&&(e.language.locale=e.language.locale[i[0]]),e.$refs.dialog.open(),n.next=12;break;case 9:n.prev=9,n.t0=n["catch"](0),e.$store.dispatch("notification/error",n.t0);case 12:case"end":return n.stop()}}),n,null,[[0,9]])})))()},submit:function(){var t=this;return Object(j["a"])(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:if(0!==t.language.name.length){e.next=2;break}return e.abrupt("return",t.$refs.dialog.error(t.$t("error.language.name")));case 2:return"string"===typeof t.language.locale&&(t.language.locale=t.language.locale.trim()||null),e.prev=3,e.next=6,t.$api.languages.update(t.language.code,{name:t.language.name,direction:t.language.direction,locale:t.language.locale});case 6:t.$store.dispatch("languages/load"),t.success({message:t.$t("language.updated"),event:"language.update"}),e.next=13;break;case 10:e.prev=10,e.t0=e["catch"](3),t.$refs.dialog.error(e.t0.message);case 13:case"end":return e.stop()}}),e,null,[[3,10]])})))()}}},me=he,ge=Object(y["a"])(me,pe,de,!1,null,null,null),be=ge.exports,ve=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-form-dialog",{ref:"dialog",attrs:{fields:t.fields,"submit-button":t.$t("page.draft.create")},on:{submit:t.submit,close:t.reset},model:{value:t.page,callback:function(e){t.page=e},expression:"page"}})},ke=[],$e={mixins:[S],data:function(){return{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=this.$helper.slug(t,[this.slugs,this.system.ascii])}},methods:{emptyForm:function(){return{title:"",slug:"",template:null}},open:function(t,e,n){var i=this;return Object(j["a"])(regeneratorRuntime.mark((function r(){var s;return regeneratorRuntime.wrap((function(r){while(1)switch(r.prev=r.next){case 0:return i.parent=t,i.section=n,r.prev=2,r.next=5,i.$api.get(e,{section:n});case 5:s=r.sent,i.templates=s.map((function(t){return{value:t.name,text:t.title}})),i.templates[0]&&(i.page.template=i.templates[0].value),i.$refs.dialog.open(),r.next=14;break;case 11:r.prev=11,r.t0=r["catch"](2),i.$store.dispatch("notification/error",r.t0);case 14:case"end":return r.stop()}}),r,null,[[2,11]])})))()},submit:function(){var t=this;return Object(j["a"])(regeneratorRuntime.mark((function e(){var n,i;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:if(t.page.title=t.page.title.trim(),0!==t.page.title.length){e.next=4;break}return t.$refs.dialog.error(t.$t("error.page.changeTitle.empty")),e.abrupt("return");case 4:return n={template:t.page.template,slug:t.page.slug,content:{title:t.page.title}},e.prev=5,e.next=8,t.$api.post(t.parent+"/children",n);case 8:i=e.sent,t.success({route:t.$api.pages.link(i.id),message:":)",event:"page.create"}),e.next=15;break;case 12:e.prev=12,e.t0=e["catch"](5),t.$refs.dialog.error(e.t0.message);case 15:case"end":return e.stop()}}),e,null,[[5,12]])})))()},reset:function(){this.page=this.emptyForm()}}},ye=$e,_e=Object(y["a"])(ye,ve,ke,!1,null,null,null),we=_e.exports,xe=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-form-dialog",{ref:"dialog",attrs:{fields:t.fields,"submit-button":t.$t("duplicate")},on:{submit:t.submit},model:{value:t.page,callback:function(e){t.page=e},expression:"page"}})},Oe=[],je={mixins:[S],data:function(){return{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=this.$helper.slug(t,[this.slugs,this.system.ascii])}},methods:{open:function(t){var e=this;return Object(j["a"])(regeneratorRuntime.mark((function n(){var i;return regeneratorRuntime.wrap((function(n){while(1)switch(n.prev=n.next){case 0:return n.prev=0,n.next=3,e.$api.pages.get(t,{language:"@default",select:"id,slug,hasChildren,hasDrafts,hasFiles,title"});case 3:i=n.sent,e.page.id=i.id,e.page.slug=i.slug+"-"+e.$helper.slug(e.$t("page.duplicate.appendix")),e.page.hasChildren=i.hasChildren,e.page.hasDrafts=i.hasDrafts,e.page.hasFiles=i.hasFiles,e.$refs.dialog.open(),n.next=15;break;case 12:n.prev=12,n.t0=n["catch"](0),e.$store.dispatch("notification/error",n.t0);case 15:case"end":return n.stop()}}),n,null,[[0,12]])})))()},submit:function(){var t=this;return Object(j["a"])(regeneratorRuntime.mark((function e(){var n;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,t.$api.pages.duplicate(t.page.id,t.page.slug,{children:t.page.children,files:t.page.files});case 3:n=e.sent,t.success({route:t.$api.pages.link(n.id),message:":)",event:"page.duplicate"}),e.next=10;break;case 7:e.prev=7,e.t0=e["catch"](0),t.$refs.dialog.error(e.t0.message);case 10:case"end":return e.stop()}}),e,null,[[0,7]])})))()}}},Se=je,Ce=Object(y["a"])(Se,xe,Oe,!1,null,null,null),Ee=Ce.exports,Re=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-remove-dialog",{ref:"dialog",attrs:{size:t.hasSubpages?"medium":"small"},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)},Te=[],Ie={mixins:[S],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;return Object(j["a"])(regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){while(1)switch(n.prev=n.next){case 0:return n.prev=0,n.next=3,e.$api.pages.get(t,{select:"id, title, hasChildren, hasDrafts, parent"});case 3:e.page=n.sent,e.$refs.dialog.open(),n.next=10;break;case 7:n.prev=7,n.t0=n["catch"](0),e.$store.dispatch("notification/error",n.t0);case 10:case"end":return n.stop()}}),n,null,[[0,7]])})))()},submit:function(){var t=this;return Object(j["a"])(regeneratorRuntime.mark((function e(){var n;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:if(!t.hasSubpages||t.model.check===t.page.title){e.next=2;break}return e.abrupt("return",t.$refs.dialog.error(t.$t("error.page.delete.confirm")));case 2:return e.prev=2,e.next=5,t.$api.pages.delete(t.page.id,{force:!0});case 5:t.$store.dispatch("content/remove","pages/"+t.page.id),n={message:":)",event:"page.delete"},t.$route.params.path&&t.page.id===t.$route.params.path.replace(/\+/g,"/")&&(t.page.parent?n.route=t.$api.pages.link(t.page.parent.id):n.route="/pages"),t.success(n),e.next=14;break;case 11:e.prev=11,e.t0=e["catch"](2),t.$refs.dialog.error(e.t0.message);case 14:case"end":return e.stop()}}),e,null,[[2,11]])})))()},reset:function(){this.model=this.emptyForm()}}},Le=Ie,Ae=(n("12fb"),Object(y["a"])(Le,Re,Te,!1,null,null,null)),Be=Ae.exports,qe=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-form-dialog",{ref:"dialog",attrs:{fields:t.fields,"submit-button":t.$t("rename")},on:{submit:t.submit},model:{value:t.page,callback:function(e){t.page=e},expression:"page"}})},Ne=[],Pe={mixins:[S],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;return Object(j["a"])(regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){while(1)switch(n.prev=n.next){case 0:return n.prev=0,n.next=3,e.$api.pages.get(t,{select:["id","title"]});case 3:e.page=n.sent,e.$refs.dialog.open(),n.next=10;break;case 7:n.prev=7,n.t0=n["catch"](0),e.$store.dispatch("notification/error",n.t0);case 10:case"end":return n.stop()}}),n,null,[[0,7]])})))()},submit:function(){var t=this;return Object(j["a"])(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:if(t.page.title=t.page.title.trim(),0!==t.page.title.length){e.next=3;break}return e.abrupt("return",t.$refs.dialog.error(t.$t("error.page.changeTitle.empty")));case 3:return e.prev=3,e.next=6,t.$api.pages.changeTitle(t.page.id,t.page.title);case 6:t.success({message:":)",event:"page.changeTitle"}),e.next=12;break;case 9:e.prev=9,e.t0=e["catch"](3),t.$refs.dialog.error(e.t0.message);case 12:case"end":return e.stop()}}),e,null,[[3,9]])})))()}}},De=Pe,Me=Object(y["a"])(De,qe,Ne,!1,null,null,null),Fe=Me.exports,Ue=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-form-dialog",{ref:"dialog",attrs:{fields:t.fields,"submit-button":t.$t("change")},on:{submit:t.submit},model:{value:t.form,callback:function(e){t.form=e},expression:"form"}})},ze=[],He={mixins:[S],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:Object.keys(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;return Object(j["a"])(regeneratorRuntime.mark((function n(){var i,r;return regeneratorRuntime.wrap((function(n){while(1)switch(n.prev=n.next){case 0:return n.prev=0,n.next=3,e.$api.pages.get(t,{select:["id","status","num","errors","blueprint"]});case 3:if(i=n.sent,!1!==i.blueprint.options.changeStatus){n.next=6;break}return n.abrupt("return",e.$store.dispatch("notification/error",{message:e.$t("error.page.changeStatus.permission")}));case 6:if(!("draft"===i.status&&Object.keys(i.errors).length>0)){n.next=8;break}return n.abrupt("return",e.$store.dispatch("notification/error",{message:e.$t("error.page.changeStatus.incomplete"),details:i.errors}));case 8:if("default"!==i.blueprint.num){n.next=21;break}return n.prev=9,n.next=12,e.$api.pages.get(t,{select:["siblings"]});case 12:r=n.sent,e.setup(Object(I["a"])(Object(I["a"])({},i),{},{siblings:r.siblings})),n.next=19;break;case 16:n.prev=16,n.t0=n["catch"](9),e.$store.dispatch("notification/error",n.t0);case 19:n.next=22;break;case 21:e.setup(Object(I["a"])(Object(I["a"])({},i),{},{siblings:[]}));case 22:n.next=27;break;case 24:n.prev=24,n.t1=n["catch"](0),e.$store.dispatch("notification/error",n.t1);case 27:case"end":return n.stop()}}),n,null,[[0,24],[9,16]])})))()},setup:function(t){this.page=t,this.form.position=t.num||t.siblings.length+1,this.form.status=t.status,this.states=t.blueprint.status,this.$refs.dialog.open()},submit:function(){var t=this;return Object(j["a"])(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,t.$api.pages.changeStatus(t.page.id,t.form.status,t.form.position||1);case 3:t.success({message:":)",event:"page.changeStatus"}),e.next=9;break;case 6:e.prev=6,e.t0=e["catch"](0),t.$refs.dialog.error(e.t0.message);case 9:case"end":return e.stop()}}),e,null,[[0,6]])})))()}}},Ke=He,Ve=Object(y["a"])(Ke,Ue,ze,!1,null,null,null),Ye=Ve.exports,We=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-form-dialog",{ref:"dialog",attrs:{fields:t.fields,"submit-button":t.$t("change")},on:{submit:t.submit},model:{value:t.page,callback:function(e){t.page=e},expression:"page"}})},Je=[],Ge={mixins:[S],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;return Object(j["a"])(regeneratorRuntime.mark((function n(){var i;return regeneratorRuntime.wrap((function(n){while(1)switch(n.prev=n.next){case 0:return n.prev=0,n.next=3,e.$api.pages.get(t,{select:["id","template","blueprints"]});case 3:if(i=n.sent,!(i.blueprints.length<=1)){n.next=6;break}return n.abrupt("return",e.$store.dispatch("notification/error",{message:e.$t("error.page.changeTemplate.invalid",{slug:i.id})}));case 6:e.page=i,e.page.blueprints=e.page.blueprints.map((function(t){return{text:t.title,value:t.name}})),e.$refs.dialog.open(),n.next=14;break;case 11:n.prev=11,n.t0=n["catch"](0),e.$store.dispatch("notification/error",n.t0);case 14:case"end":return n.stop()}}),n,null,[[0,11]])})))()},submit:function(){var t=this;return Object(j["a"])(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return t.$events.$emit("keydown.cmd.s"),e.prev=1,e.next=4,t.$api.pages.changeTemplate(t.page.id,t.page.template);case 4:t.success({message:":)",event:"page.changeTemplate"}),e.next=10;break;case 7:e.prev=7,e.t0=e["catch"](1),t.$refs.dialog.error(e.t0.message);case 10:case"end":return e.stop()}}),e,null,[[1,7]])})))()}}},Ze=Ge,Xe=Object(y["a"])(Ze,We,Je,!1,null,null,null),Qe=Xe.exports,tn=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-dialog",{ref:"dialog",attrs:{"submit-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)},en=[],nn=(n("99af"),{mixins:[S],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=this.$helper.slug(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;return Object(j["a"])(regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){while(1)switch(n.prev=n.next){case 0:return n.prev=0,n.next=3,e.$api.pages.get(t,{view:"panel"});case 3:e.page=n.sent,e.sluggify(e.page.slug),e.$refs.dialog.open(),n.next=11;break;case 8:n.prev=8,n.t0=n["catch"](0),e.$store.dispatch("notification/error",n.t0);case 11:case"end":return n.stop()}}),n,null,[[0,8]])})))()},submit:function(){var t=this;return Object(j["a"])(regeneratorRuntime.mark((function e(){var n,i;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:if(t.slug!==t.page.slug){e.next=4;break}return t.$refs.dialog.close(),t.$store.dispatch("notification/success",":)"),e.abrupt("return");case 4:if(0!==t.slug.length){e.next=6;break}return e.abrupt("return",t.$refs.dialog.error(t.$t("error.page.slug.invalid")));case 6:return e.prev=6,e.next=9,t.$api.pages.changeSlug(t.page.id,t.slug);case 9:n=e.sent,t.$store.dispatch("content/move",["pages/"+t.page.id,"pages/"+n.id]),i={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||(i.route=t.$api.pages.link(n.id),delete i.event),t.success(i),e.next=19;break;case 16:e.prev=16,e.t0=e["catch"](6),t.$refs.dialog.error(e.t0.message);case 19:case"end":return e.stop()}}),e,null,[[6,16]])})))()}}}),rn=nn,sn=Object(y["a"])(rn,tn,en,!1,null,null,null),an=sn.exports,on=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.options.search?n("k-input",{staticClass:"k-dialog-search",attrs:{autofocus:!0,placeholder:t.$t("search")+" …",type:"text",icon:"search"},model:{value:t.search,callback:function(e){t.search=e},expression:"search"}}):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-pagination",t._b({staticClass:"k-dialog-pagination",attrs:{details:!0,dropdown:!1,align:"center"},on:{paginate:t.paginate}},"k-pagination",t.pagination,!1))]:n("k-empty",{attrs:{icon:"page"}},[t._v("\n "+t._s(t.$t("dialog.pages.empty"))+"\n ")])]],2)},un=[],ln={mixins:[Ut],data:function(){var t=Ut.data();return Object(I["a"])(Object(I["a"])({},t),{},{model:{title:null,parent:null},options:Object(I["a"])(Object(I["a"])({},t.options),{},{parent:null})})},computed:{fetchData:function(){return{parent:this.options.parent}}},methods:{back:function(){this.options.parent=this.model.parent,this.pagination.page=1,this.fetch()},go:function(t){this.options.parent=t.id,this.pagination.page=1,this.fetch()},onFetched:function(t){this.model=t.model}}},cn=ln,pn=(n("ac27"),Object(y["a"])(cn,on,un,!1,null,null,null)),dn=pn.exports,fn=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-text-dialog",t._g(t._b({ref:"dialog"},"k-text-dialog",t.$props,!1),t.$listeners),[t._t("default")],2)},hn=[],mn={mixins:[S],props:{icon:{type:String,default:"trash"},submitButton:{type:[String,Boolean],default:function(){return this.$t("delete")}},text:String,theme:{type:String,default:"negative"}}},gn=mn,bn=Object(y["a"])(gn,fn,hn,!1,null,null,null),vn=bn.exports,kn={extends:Fe,methods:{open:function(){var t=this;return Object(j["a"])(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,t.$api.site.get({select:["title"]});case 3:t.page=e.sent,t.$refs.dialog.open(),e.next=10;break;case 7:e.prev=7,e.t0=e["catch"](0),t.$store.dispatch("notification/error",e.t0);case 10:case"end":return e.stop()}}),e,null,[[0,7]])})))()},submit:function(){var t=this;return Object(j["a"])(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:if(t.page.title=t.page.title.trim(),0!==t.page.title.length){e.next=4;break}return t.$refs.dialog.error(t.$t("error.site.changeTitle.empty")),e.abrupt("return");case 4:return e.prev=4,e.next=7,t.$api.site.changeTitle(t.page.title);case 7:t.$store.dispatch("system/title",t.page.title),t.success({message:":)",event:"site.changeTitle"}),e.next=14;break;case 11:e.prev=11,e.t0=e["catch"](4),t.$refs.dialog.error(e.t0.message);case 14:case"end":return e.stop()}}),e,null,[[4,11]])})))()}}},$n=kn,yn=Object(y["a"])($n,s,a,!1,null,null,null),_n=yn.exports,wn=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-dialog",t._g(t._b({ref:"dialog"},"k-dialog",t.$props,!1),t.$listeners),[t._t("default",[n("k-text",{domProps:{innerHTML:t._s(t.text)}})])],2)},xn=[],On={mixins:[S],props:{text:String}},jn=On,Sn=Object(y["a"])(jn,wn,xn,!1,null,null,null),Cn=Sn.exports,En=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-form-dialog",{ref:"dialog",attrs:{fields:t.fields,"submit-button":t.$t("create")},on:{submit:t.create,close:t.reset},model:{value:t.user,callback:function(e){t.user=e},expression:"user"}})},Rn=[],Tn={mixins:[S],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;return Object(j["a"])(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,t.$api.users.create(t.user);case 3:t.success({message:":)",event:"user.create"}),e.next=9;break;case 6:e.prev=6,e.t0=e["catch"](0),t.$refs.dialog.error(e.t0.message);case 9:case"end":return e.stop()}}),e,null,[[0,6]])})))()},emptyForm:function(){return{name:"",email:"",password:"",language:this.$store.state.system.info.defaultLanguage||"en",role:this.$user.role.name}},open:function(){var t=this;return Object(j["a"])(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,t.$api.roles.options({canBe:"created"});case 3:t.roles=e.sent,"admin"!==t.$user.role.name&&(t.roles=t.roles.filter((function(t){return"admin"!==t.value}))),e.next=10;break;case 7:e.prev=7,e.t0=e["catch"](0),t.$store.dispatch("notification/error",e.t0);case 10:return e.prev=10,e.next=13,t.$api.translations.options();case 13:t.languages=e.sent,e.next=19;break;case 16:e.prev=16,e.t1=e["catch"](10),t.$store.dispatch("notification/error",e.t1);case 19:t.$refs.dialog.open();case 20:case"end":return e.stop()}}),e,null,[[0,7],[10,16]])})))()},reset:function(){this.user=this.emptyForm()}}},In=Tn,Ln=Object(y["a"])(In,En,Rn,!1,null,null,null),An=Ln.exports,Bn=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-form-dialog",{ref:"dialog",attrs:{fields:t.fields,"submit-button":t.$t("change")},on:{submit:t.submit},model:{value:t.user,callback:function(e){t.user=e},expression:"user"}})},qn=[],Nn={mixins:[S],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;return Object(j["a"])(regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){while(1)switch(n.prev=n.next){case 0:return n.prev=0,n.next=3,e.$api.users.get(t,{select:["id","email"]});case 3:e.user=n.sent,e.$refs.dialog.open(),n.next=10;break;case 7:n.prev=7,n.t0=n["catch"](0),e.$store.dispatch("notification/error",n.t0);case 10:case"end":return n.stop()}}),n,null,[[0,7]])})))()},submit:function(){var t=this;return Object(j["a"])(regeneratorRuntime.mark((function e(){var n;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,t.$api.users.changeEmail(t.user.id,t.user.email);case 3:t.$store.dispatch("content/revert","users/"+t.user.id),t.$user.id===t.user.id&&t.$store.dispatch("user/email",t.user.email),n={message:":)",event:"user.changeEmail"},t.success(n),e.next=12;break;case 9:e.prev=9,e.t0=e["catch"](0),t.$refs.dialog.error(e.t0.message);case 12:case"end":return e.stop()}}),e,null,[[0,9]])})))()}}},Pn=Nn,Dn=Object(y["a"])(Pn,Bn,qn,!1,null,null,null),Mn=Dn.exports,Fn=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-form-dialog",{ref:"dialog",attrs:{fields:t.fields,"submit-button":t.$t("change")},on:{submit:t.submit},model:{value:t.user,callback:function(e){t.user=e},expression:"user"}})},Un=[],zn={mixins:[S],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;return Object(j["a"])(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,t.$api.translations.options();case 2:t.languages=e.sent;case 3:case"end":return e.stop()}}),e)})))()},methods:{open:function(t){var e=this;return Object(j["a"])(regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){while(1)switch(n.prev=n.next){case 0:return n.prev=0,n.next=3,e.$api.users.get(t,{view:"compact"});case 3:e.user=n.sent,e.$refs.dialog.open(),n.next=10;break;case 7:n.prev=7,n.t0=n["catch"](0),e.$store.dispatch("notification/error",n.t0);case 10:case"end":return n.stop()}}),n,null,[[0,7]])})))()},submit:function(){var t=this;return Object(j["a"])(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,t.$api.users.changeLanguage(t.user.id,t.user.language);case 3:t.user=e.sent,t.$user.id===t.user.id&&t.$store.dispatch("user/language",t.user.language),t.success({message:":)",event:"user.changeLanguage"}),e.next=11;break;case 8:e.prev=8,e.t0=e["catch"](0),t.$refs.dialog.error(e.t0.message);case 11:case"end":return e.stop()}}),e,null,[[0,8]])})))()}}},Hn=zn,Kn=Object(y["a"])(Hn,Fn,Un,!1,null,null,null),Vn=Kn.exports,Yn=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-form-dialog",{ref:"dialog",attrs:{fields:t.fields,"submit-button":t.$t("change")},on:{submit:t.submit},model:{value:t.values,callback:function(e){t.values=e},expression:"values"}})},Wn=[],Jn=(n("ddb0"),{mixins:[S],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;return Object(j["a"])(regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){while(1)switch(n.prev=n.next){case 0:return n.prev=0,n.next=3,e.$api.users.get(t);case 3:e.user=n.sent,e.$refs.dialog.open(),n.next=10;break;case 7:n.prev=7,n.t0=n["catch"](0),e.$store.dispatch("notification/error",n.t0);case 10:case"end":return n.stop()}}),n,null,[[0,7]])})))()},submit:function(){var t=this;return Object(j["a"])(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:if(t.values.password&&!(t.values.password.length<8)){e.next=3;break}return t.$refs.dialog.error(t.$t("error.user.password.invalid")),e.abrupt("return",!1);case 3:if(t.values.password===t.values.passwordConfirmation){e.next=6;break}return t.$refs.dialog.error(t.$t("error.user.password.notSame")),e.abrupt("return",!1);case 6:return e.prev=6,e.next=9,t.$api.users.changePassword(t.user.id,t.values.password);case 9:t.success({message:":)",event:"user.changePassword"}),e.next=15;break;case 12:e.prev=12,e.t0=e["catch"](6),t.$refs.dialog.error(e.t0.message);case 15:case"end":return e.stop()}}),e,null,[[6,12]])})))()}}}),Gn=Jn,Zn=Object(y["a"])(Gn,Yn,Wn,!1,null,null,null),Xn=Zn.exports,Qn=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-remove-dialog",{ref:"dialog",attrs:{text:t.$t("user.delete.confirm",{email:t.user.email})},on:{submit:t.submit}})},ti=[],ei={mixins:[S],data:function(){return{user:{email:null}}},methods:{open:function(t){var e=this;return Object(j["a"])(regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){while(1)switch(n.prev=n.next){case 0:return n.prev=0,n.next=3,e.$api.users.get(t);case 3:e.user=n.sent,e.$refs.dialog.open(),n.next=10;break;case 7:n.prev=7,n.t0=n["catch"](0),e.$store.dispatch("notification/error",n.t0);case 10:case"end":return n.stop()}}),n,null,[[0,7]])})))()},submit:function(){var t=this;return Object(j["a"])(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,t.$api.users.delete(t.user.id);case 3:t.$store.dispatch("content/remove","users/"+t.user.id),t.success({message:":)",event:"user.delete"}),"User"===t.$route.name&&t.$go("/users"),e.next=11;break;case 8:e.prev=8,e.t0=e["catch"](0),t.$refs.dialog.error(e.t0.message);case 11:case"end":return e.stop()}}),e,null,[[0,8]])})))()}}},ni=ei,ii=Object(y["a"])(ni,Qn,ti,!1,null,null,null),ri=ii.exports,si=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-form-dialog",{ref:"dialog",attrs:{fields:t.fields,"submit-button":t.$t("rename")},on:{submit:t.submit},model:{value:t.user,callback:function(e){t.user=e},expression:"user"}})},ai=[],oi={mixins:[S],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;return Object(j["a"])(regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){while(1)switch(n.prev=n.next){case 0:return n.prev=0,n.next=3,e.$api.users.get(t,{select:["id","name"]});case 3:e.user=n.sent,e.$refs.dialog.open(),n.next=10;break;case 7:n.prev=7,n.t0=n["catch"](0),e.$store.dispatch("notification/error",n.t0);case 10:case"end":return n.stop()}}),n,null,[[0,7]])})))()},submit:function(){var t=this;return Object(j["a"])(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return t.user.name=t.user.name.trim(),e.prev=1,e.next=4,t.$api.users.changeName(t.user.id,t.user.name);case 4:t.$user.id===t.user.id&&t.$store.dispatch("user/name",t.user.name),t.success({message:":)",event:"user.changeName"}),e.next=11;break;case 8:e.prev=8,e.t0=e["catch"](1),t.$refs.dialog.error(e.t0.message);case 11:case"end":return e.stop()}}),e,null,[[1,8]])})))()}}},ui=oi,li=Object(y["a"])(ui,si,ai,!1,null,null,null),ci=li.exports,pi=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-form-dialog",{ref:"dialog",attrs:{fields:t.fields,"submit-button":t.$t("user.changeRole")},on:{submit:t.submit},model:{value:t.user,callback:function(e){t.user=e},expression:"user"}})},di=[],fi={mixins:[S],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;return Object(j["a"])(regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){while(1)switch(n.prev=n.next){case 0:return e.id=t,n.prev=1,n.next=4,e.$api.users.get(t);case 4:return e.user=n.sent,e.user.role=e.user.role.name,n.next=8,e.$api.users.roles(t);case 8:e.roles=n.sent,"admin"!==e.$user.role.name&&(e.roles=e.roles.filter((function(t){return"admin"!==t.value}))),e.$refs.dialog.open(),n.next=16;break;case 13:n.prev=13,n.t0=n["catch"](1),e.$store.dispatch("notification/error",n.t0);case 16:case"end":return n.stop()}}),n,null,[[1,13]])})))()},submit:function(){var t=this;return Object(j["a"])(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,t.$api.users.changeRole(t.user.id,t.user.role);case 3:t.$user.id===t.user.id&&t.$store.dispatch("user/load"),t.success({message:":)",event:"user.changeRole"}),e.next=10;break;case 7:e.prev=7,e.t0=e["catch"](0),t.$refs.dialog.error(e.t0.message);case 10:case"end":return e.stop()}}),e,null,[[0,7]])})))()}}},hi=fi,mi=Object(y["a"])(hi,pi,di,!1,null,null,null),gi=mi.exports,bi=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.options.search?n("k-input",{staticClass:"k-dialog-search",attrs:{autofocus:!0,placeholder:t.$t("search")+" …",type:"text",icon:"search"},model:{value:t.search,callback:function(e){t.search=e},expression:"search"}}):t._e(),t.models.length?[n("k-list",t._l(t.models,(function(e){return n("k-list-item",{key:e.email,attrs:{text:e.text,info:e.info!==e.text?e.info:null,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-pagination",t._b({staticClass:"k-dialog-pagination",attrs:{details:!0,dropdown:!1,align:"center"},on:{paginate:t.paginate}},"k-pagination",t.pagination,!1))]:n("k-empty",{attrs:{icon:"users"}},[t._v("\n "+t._s(t.$t("dialog.users.empty"))+"\n ")])]],2)},vi=[],ki={mixins:[Ut]},$i=ki,yi=(n("7568"),Object(y["a"])($i,bi,vi,!1,null,null,null)),_i=yi.exports,wi=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)},xi=[],Oi=(n("c975"),n("fb6a"),{props:{limit:{type:Number,default: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()}}}}),ji=Oi,Si=Object(y["a"])(ji,wi,xi,!1,null,null,null),Ci=Si.exports,Ei=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)])])])])},Ri=[],Ti={props:{value:String,disabled:Boolean},data:function(){var t=this.value?this.$library.dayjs(this.value):this.$library.dayjs();return{day:t.date(),month:t.month(),year:t.year(),today:this.$library.dayjs(),current:t}},computed:{date:function(){return this.$library.dayjs("".concat(this.year,"-").concat(this.month+1,"-").concat(this.day))},numberOfDays:function(){return this.date.daysInMonth()},numberOfWeeks:function(){return Math.ceil((this.numberOfDays+this.firstWeekday-1)/7)},firstWeekday:function(){var t=this.date.clone().startOf("month").day();return t>0?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:this.$helper.pad(e)});return t}},watch:{value:function(t){var e=this.$library.dayjs(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(r)}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(this.$library.dayjs()),this.select(this.day)},select:function(t){t&&(this.day=t);var e=this.$library.dayjs(new Date(this.year,this.month,this.day,this.current.hour(),this.current.minute()));this.$emit("input",e.toISOString())}}},Ii=Ti,Li=(n("ee15"),Object(y["a"])(Ii,Ei,Ri,!1,null,null,null)),Ai=Li.exports,Bi=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()])},qi=[],Ni={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))}}},Pi=Ni,Di=(n("fc0f"),Object(y["a"])(Pi,Bi,qi,!1,null,null,null)),Mi=Di.exports,Fi=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=[],zi={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(I["a"])(Object(I["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()}}},Hi=zi,Ki=(n("5d33"),Object(y["a"])(Hi,Fi,Ui,!1,null,null,null)),Vi=Ki.exports,Yi=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),t.form.lock.unlockable?n("k-button",{staticClass:"k-form-button",attrs:{icon:"unlock"},on:{click:t.setUnlock}},[t._v("\n "+t._s(t.$t("lock.unlock"))+"\n ")]):n("k-icon",{staticClass:"k-form-lock-loader",attrs:{type:"loader"}})],1):"changes"===t.mode?n("k-view",[n("k-button",{staticClass:"k-form-button",attrs:{disabled:t.isDisabled,icon:"undo"},on:{click:function(e){return t.$refs.revert.open()}}},[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(),n("k-dialog",{ref:"revert",attrs:{"submit-button":t.$t("revert"),icon:"undo",theme:"negative"},on:{submit:t.onRevert}},[n("k-text",{domProps:{innerHTML:t._s(t.$t("revert.confirm"))}})],1)],1)},Wi=[],Ji=n("2909"),Gi={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["content/hasChanges"]()},form:function(){return{lock:this.$store.state.content.status.lock,unlock:this.$store.state.content.status.unlock}},id:function(){return this.$store.state.content.current},isDisabled:function(){return!1===this.$store.state.content.status.enabled},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(){this.id&&!1===this.hasChanges&&this.$store.dispatch("heartbeat/add",[this.getLock,10])}},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(Ji["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("content/lock",null)):e.$store.dispatch("content/lock",t.locked)})).catch((function(){}))},setLock:function(){var t,e=this;!0===this.supportsLocking&&(t=this.$api).patch.apply(t,Object(Ji["a"])(this.api.lock)).catch((function(t){if("error.lock.notImplemented"===t.key)return e.supportsLocking=!1,e.$store.dispatch("heartbeat/remove",e.setLock),!1;e.$store.dispatch("content/revert",e.id),e.$store.dispatch("heartbeat/remove",e.setLock),e.$store.dispatch("heartbeat/add",[e.getLock,10])}))},removeLock:function(){var t,e=this;!0===this.supportsLocking&&(this.$store.dispatch("heartbeat/remove",this.setLock),(t=this.$api).delete.apply(t,Object(Ji["a"])(this.api.lock)).then((function(){e.$store.dispatch("content/lock",null),e.$store.dispatch("heartbeat/add",[e.getLock,10])})).catch((function(){})))},setUnlock:function(){var t,e=this;!0===this.supportsLocking&&(this.$store.dispatch("heartbeat/remove",this.setLock),(t=this.$api).patch.apply(t,Object(Ji["a"])(this.api.unlock)).then((function(){e.$store.dispatch("content/lock",null),e.$store.dispatch("heartbeat/add",[e.getLock,10])})).catch((function(){})))},removeUnlock:function(){var t,e=this;!0===this.supportsLocking&&(this.$store.dispatch("heartbeat/remove",this.setLock),(t=this.$api).delete.apply(t,Object(Ji["a"])(this.api.unlock)).then((function(){e.$store.dispatch("content/unlock",null),e.$store.dispatch("heartbeat/add",[e.getLock,10])})).catch((function(){})))},onDownload:function(){var t=this,e="";Object.keys(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("content/revert"),this.removeUnlock()},onRevert:function(){this.$store.dispatch("content/revert"),this.$refs.revert.close()},onSave:function(t){var e=this;return!!t&&(t.preventDefault&&t.preventDefault(),!1===this.hasChanges||void this.$store.dispatch("content/save").then((function(){e.$events.$emit("model.update"),e.$store.dispatch("notification/success",":)")})).catch((function(t){403!==t.code&&(t.details&&Object.keys(t.details).length>0?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}]}))})))}}},Zi=Gi,Xi=(n("18dd"),Object(y["a"])(Zi,Yi,Wi,!1,null,null,null)),Qi=Xi.exports,tr=function(){var t=this,e=t.$createElement,n=t._self._c||e;return t.hasChanges?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.id,attrs:{icon:e.icon},nativeOn:{click:function(n){return n.stopPropagation(),t.go(e.target)}}},[t._v("\n "+t._s(e.label)+"\n ")])}))],2)],1):t._e()},er=[],nr=(n("3ca3"),{data:function(){return{isOpen:!1,entries:[]}},computed:{store:function(){return this.$store.state.content.models},models:function(){var t=this,e=Object.keys(this.store).filter((function(e){return!!t.store[e]})),n=e.map((function(e){return Object(I["a"])({id:e},t.store[e])}));return n.filter((function(t){return Object.keys(t.changes).length>0}))},hasChanges:function(){return this.models.length>0}},methods:{go:function(t){if(t.language&&this.$store.state.languages.current.code!==t.language){var e=this.$store.state.languages.all.filter((function(e){return e.code===t.language}))[0];this.$store.dispatch("languages/current",e)}this.$go(t.link)},load:function(){var t=this,e=this.models.map((function(e){return t.$api.get(e.api,{view:"compact"},null,!0).then((function(n){var i;if(i=!0===e.id.startsWith("pages/")?{icon:"page",label:n.title,target:{link:t.$api.pages.link(n.id)}}:!0===e.id.startsWith("files/")?{icon:"image",label:n.filename,target:{link:n.link}}:!0===e.id.startsWith("users/")?{icon:"user",label:n.email,target:{link:t.$api.users.link(n.id)}}:{icon:"home",label:n.title,target:{link:"/site"}},t.$store.state.languages.current){var r=e.id.split("/").pop();i.label=i.label+" ("+r+")",i.target.language=r}return i})).catch((function(){return t.$store.dispatch("content/remove",e.id),null}))}));return Promise.all(e).then((function(e){t.entries=e.filter((function(t){return null!==t})),0===t.entries.length&&t.$store.dispatch("notification/success",t.$t("lock.unsaved.empty"))}))},toggle:function(){var t=this;!1===this.$refs.list.isOpen?this.load().then((function(){t.$refs.list&&t.$refs.list.toggle()})):this.$refs.list.toggle()}}}),ir=nr,rr=(n("9e26"),Object(y["a"])(ir,tr,er,!1,null,null,null)),sr=rr.exports,ar=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,"data-translate":t.translate},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:t.$t("field.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)},or=[],ur={inheritAttrs:!1,props:{counter:[Boolean,Object],disabled:Boolean,endpoints:Object,help:String,input:[String,Number],label:String,name:[String,Number],required:Boolean,translate:Boolean,type:String},computed:{labelText:function(){return this.label||" "}}},lr=ur,cr=(n("a134"),Object(y["a"])(lr,ar,or,!1,null,null,null)),pr=cr.exports,dr=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,r){return t.onInvalid(n,r,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()]}))],2)],1)},fr=[],hr={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=Object.keys(this.$refs)[0];this.focus(e)}},hasFieldType:function(t){return this.$helper.isComponent("k-".concat(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 Object.keys(t.when).forEach((function(i){var r=e.value[i.toLowerCase()],s=t.when[i];r!==s&&(n=!1)})),n},onInvalid:function(t,e,n,i){this.errors[i]=e,this.$emit("invalid",this.errors)},hasErrors:function(){return Object.keys(this.errors).length}}},mr=hr,gr=(n("862b"),Object(y["a"])(mr,dr,fr,!1,null,null,null)),br=gr.exports,vr=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()])},kr=[],$r={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(I["a"])(Object(I["a"])({},this.$listeners),{},{invalid:function(e,n){t.isInvalid=e,t.$emit("invalid",e,n)}})}},computed:{inputProps:function(){return Object(I["a"])(Object(I["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()}}}},yr=$r,_r=(n("c7c8"),Object(y["a"])(yr,vr,kr,!1,null,null,null)),wr=_r.exports,xr=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:{"cancel-button":!1,"submit-button":!1,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)},Or=[],jr={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=Object.assign({},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(Ji["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){e.$helper.upload(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,Object.keys(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,Object.values(n.completed))}),250)}}}},Sr=jr,Cr=(n("5aee"),Object(y["a"])(Sr,xr,Or,!1,null,null,null)),Er=Cr.exports,Rr=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)}})])},Tr=[],Ir=n("b5ae"),Lr={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||Ir["required"]}}}},Ar=Lr,Br=(n("42e4"),Object(y["a"])(Ar,Rr,Tr,!1,null,null,null)),qr=Br.exports,Nr=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)},Pr=[],Dr=(n("a434"),{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===Array.isArray(t)?t:"string"===typeof t?String(t).split(","):"object"===Object(fe["a"])(t)?Object.values(t):void 0}},validations:function(){return{selected:{required:!this.required||Ir["required"],min:!this.min||Object(Ir["minLength"])(this.min),max:!this.max||Object(Ir["maxLength"])(this.max)}}}}),Mr=Dr,Fr=Object(y["a"])(Mr,Nr,Pr,!1,null,null,null),Ur=Fr.exports,zr=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)},Hr=[],Kr={inheritAttrs:!1,props:{autofocus:Boolean,disabled:Boolean,id:[String,Number],max:String,min:String,required:Boolean,value:String},data:function(){return{date:this.$library.dayjs(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=this.$library.dayjs(t)}},methods:{calculate:function(t,e){var n={min:{run:"subtract",take:"startOf"},max:{run:"add",take:"endOf"}}[e],i=t?this.$library.dayjs(t):null;return i&&!1!==i.isValid()||(i=this.$library.dayjs()[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:this.$helper.pad(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,parseInt(e)),"month"===t&&this.date.date()!==i&&(this.date=n.set("date",1).set("month",e).endOf("month")),this.onInput()},setInvalid:function(){this.date=this.$library.dayjs("invalid")},setInitialDate:function(t,e){var n=this.$library.dayjs();return this.date=this.$library.dayjs().set(t,parseInt(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)}}},Vr=Kr,Yr=(n("6ab3"),Object(y["a"])(Vr,zr,Hr,!1,null,null,null)),Wr=Yr.exports,Jr=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)},Gr=[],Zr={inheritAttrs:!1,props:Object(I["a"])(Object(I["a"])({},Wr.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=this.$library.dayjs(t);return e.isValid()?e.format("YYYY-MM-DD"):null},parseTime:function(t){var e=this.$library.dayjs(t);return e.isValid()?e.format("HH:mm"):null},setDate:function(t){t&&!this.timeValue&&(this.timeValue=this.$library.dayjs().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=this.$library.dayjs().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||Ir["required"]}}}},Xr=Zr,Qr=(n("4433"),Object(y["a"])(Xr,Jr,Gr,!1,null,null,null)),ts=Qr.exports,es=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",attrs:{dir:t.direction}},"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))},ns=[],is=function(t){var e=t.$store.state.languages.default||null,n=t.$store.state.languages.current||null,i=t.$store.state.system.info.multilang||!1,r=t.$store.state.system.info.user?t.$store.state.system.info.user.language:null,s=n?n.direction:null;if(i&&n&&!1===t.disabled&&(n.direction!==e.direction||r!==n.code))return s},rs={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},computed:{direction:function(){return is(this)}},data:function(){var t=this;return{listeners:Object(I["a"])(Object(I["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&&!e||!t.$refs.input.validity.patternMismatch};return{value:{required:!this.required||Ir["required"],minLength:!this.minlength||Object(Ir["minLength"])(this.minlength),maxLength:!this.maxlength||Object(Ir["maxLength"])(this.maxlength),email:"email"!==this.type||Ir["email"],url:"url"!==this.type||Ir["url"],pattern:!this.pattern||e}}}},ss=rs,as=(n("cb8f"),Object(y["a"])(ss,es,ns,!1,null,null,null)),os=as.exports,us={extends:os,props:Object(I["a"])(Object(I["a"])({},os.props),{},{autocomplete:{type:String,default:"email"},placeholder:{type:String,default:function(){return this.$t("email.placeholder")}},type:{type:String,default:"email"}})},ls=us,cs=Object(y["a"])(ls,o,u,!1,null,null,null),ps=cs.exports,ds=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,close:t.onClose},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",attrs:{placeholder:t.search.min?t.$t("search.min",{min:t.search.min}):t.$t("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.visible,(function(e){return n("k-dropdown-item",{key:e.value,class:{"k-multiselect-option":!0,selected:t.isSelected(e),disabled:!t.more},attrs:{icon:t.isSelected(e)?"check":"circle-outline"},on:{click:function(n){return n.preventDefault(),t.select(e)}},nativeOn:{keydown:[function(n){return!n.type.indexOf("key")&&t._k(n.keyCode,"enter",13,n.key,"Enter")?null:(n.preventDefault(),n.stopPropagation(),t.select(e))},function(n){return!n.type.indexOf("key")&&t._k(n.keyCode,"space",32,n.key,[" ","Spacebar"])?null:(n.preventDefault(),n.stopPropagation(),t.select(e))}]}},[n("span",{domProps:{innerHTML:t._s(e.display)}}),n("span",{staticClass:"k-multiselect-value",domProps:{innerHTML:t._s(e.info)}})])})),0===t.filtered.length?n("k-dropdown-item",{staticClass:"k-multiselect-option",attrs:{disabled:!0}},[t._v("\n "+t._s(t.emptyLabel)+"\n ")]):t._e()],2),t.visible.length1&&!this.sort},dragOptions:function(){return{disabled:!this.draggable,draggable:".k-tag",delay:1}},emptyLabel:function(){return this.q?this.$t("search.results.none"):this.$t("options.none")},visible:function(){return this.limit?this.filtered.slice(0,this.search.display||this.filtered.length):this.filtered},filtered:function(){if(this.q&&this.q.length>=(this.search.min||0)){var t=new RegExp("(".concat(RegExp.escape(this.q),")"),"ig");return this.options.filter((function(e){return String(e.text).match(t)||String(e.value).match(t)})).map((function(e){return Object(I["a"])(Object(I["a"])({},e),{},{display:String(e.text).replace(t,"$1"),info:String(e.value).replace(t,"$1")})}))}return this.options.map((function(t){return Object(I["a"])(Object(I["a"])({},t),{},{display:t.text,info:t.value})}))},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)}))},more:function(){return!this.max||this.state.length1?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||Ir["required"],min:!this.min||Object(Ir["minValue"])(this.min),max:!this.max||Object(Ir["maxValue"])(this.max)}}}},Ns=qs,Ps=(n("b5d2"),Object(y["a"])(Ns,As,Bs,!1,null,null,null)),Ds=Ps.exports,Ms=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")])},Fs=[],Us={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(I["a"])(Object(I["a"])({},this.$listeners),{},{click:function(e){return t.onClick(e)},change:function(e){return t.onInput(e.target.value)},input:function(){}})}},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||Ir["required"]}}}},zs=Us,Hs=(n("6a18"),Object(y["a"])(zs,Ms,Fs,!1,null,null,null)),Ks=Hs.exports,Vs=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,dir:t.direction},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)},Ys=[],Ws={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(){var t=this;return{tags:this.prepareTags(this.value),selected:null,newTag:null,tagOptions:this.options.map((function(e){return t.icon&&t.icon.length>0&&(e.icon=t.icon),e}),this)}},computed:{direction:function(){return is(this)},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.length=this.tags.length)return;break;case"first":e=0;break;case"last":e=this.tags.length-1;break;default:e=t;break}var i=this.tags[e];if(i){var r=this.$refs[i.value];if(r&&r[0])return{ref:r[0],tag:i,index:e}}return!1},index:function(t){return this.tags.findIndex((function(e){return e.value===t.value}))},onInput:function(){this.$emit("input",this.tags)},onInvalid:function(){this.$emit("invalid",this.$v.$invalid,this.$v)},leaveInput:function(t){0===t.target.selectionStart&&t.target.selectionStart===t.target.selectionEnd&&0!==this.tags.length&&(this.$refs.autocomplete.close(),this.navigate("last"),t.preventDefault())},navigate:function(t){var e=this.get(t);e?(e.ref.focus(),this.selectTag(e.tag)):"next"===t&&(this.$refs.input.focus(),this.selectTag(null))},prepareTags:function(t){return!1===Array.isArray(t)?[]:t.map((function(t){return"string"===typeof t?{text:t,value:t}:t}))},remove:function(t){var e=this.get("prev"),n=this.get("next");this.tags.splice(this.index(t),1),this.onInput(),e?(this.selectTag(e.tag),e.ref.focus()):n?this.selectTag(n.tag):(this.selectTag(null),this.$refs.input.focus())},select:function(){this.focus()},selectTag:function(t){this.selected=t},tab:function(t){this.newTag&&this.newTag.length>0&&(t.preventDefault(),this.addString(this.newTag))},type:function(t){this.newTag=t,this.$refs.autocomplete.search(t)}},validations:function(){return{tags:{required:!this.required||Ir["required"],minLength:!this.min||Object(Ir["minLength"])(this.min),maxLength:!this.max||Object(Ir["maxLength"])(this.max)}}}},Js=Ws,Gs=(n("27c1"),Object(y["a"])(Js,Vs,Ys,!1,null,null,null)),Zs=Gs.exports,Xs={extends:os,props:Object(I["a"])(Object(I["a"])({},os.props),{},{autocomplete:{type:String,default:"tel"},type:{type:String,default:"tel"}})},Qs=Xs,ta=Object(y["a"])(Qs,p,d,!1,null,null,null),ea=ta.exports,na=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,dir:t.direction},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.type.indexOf("key")&&t._k(e.keyCode,"enter",13,e.key,"Enter")?null:e.ctrlKey?t.onSubmit(e):null},function(e){return e.metaKey?t.onShortcut(e):null},function(e){return e.ctrlKey?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)},ia=[],ra={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}},computed:{direction:function(){return is(this)}},watch:{value:function(){var t=this;this.onInvalid(),this.$nextTick((function(){t.resize()}))}},mounted:function(){var t=this;this.$nextTick((function(){t.$library.autosize(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 r=n.value.slice(0,n.selectionStart)+t+n.value.slice(n.selectionEnd);n.value=r,e.$emit("input",r)}})),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(this.uploads&&this.$helper.isUploadEvent(t))return this.$refs.fileUpload.drop(t.dataTransfer.files,{url:B.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&&this.$helper.isUploadEvent(t))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&&"Control"!==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(){this.$library.autosize.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:B.api+"/"+this.endpoints.field+"/upload",multiple:!1})},wrap:function(t){this.insert(t+this.selection()+t)}},validations:function(){return{value:{required:!this.required||Ir["required"],minLength:!this.minlength||Object(Ir["minLength"])(this.minlength),maxLength:!this.maxlength||Object(Ir["maxLength"])(this.maxlength)}}}},sa=ra,aa=(n("cca8"),Object(y["a"])(sa,na,ia,!1,null,null,null)),oa=aa.exports,ua=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)},la=[],ca={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=this.$helper.pad(this.hour||0),e=this.$helper.pad(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),r=24===this.notation?"HH:mm:ss":"hh:mm:ss A",s=this.$library.dayjs("2000-01-01 "+i,"YYYY-MM-DD "+r);this.$emit("input",s.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=[],r=t;r<=e;r+=n)i.push({value:r,text:this.$helper.pad(r)});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=this.$library.dayjs("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}}}},pa=ca,da=(n("50da"),Object(y["a"])(pa,ua,la,!1,null,null,null)),fa=da.exports,ha=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)}})])},ma=[],ga={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 Array.isArray(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||Ir["required"]}}}},ba=ga,va=(n("bb41"),Object(y["a"])(ba,ha,ma,!1,null,null,null)),ka=va.exports,$a={extends:os,props:Object(I["a"])(Object(I["a"])({},os.props),{},{autocomplete:{type:String,default:"url"},type:{type:String,default:"url"}})},ya=$a,_a=Object(y["a"])(ya,f,h,!1,null,null,null),wa=_a.exports,xa=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",type:"checkboxes"}},"k-input",t.$props,!1),t.$listeners))],1)},Oa=[],ja={inheritAttrs:!1,props:Object(I["a"])(Object(I["a"])(Object(I["a"])(Object(I["a"])({},pr.props),wr.props),Ur.props),{},{counter:{type:Boolean,default:!0}}),computed:{counterOptions:function(){return null!==this.value&&!this.disabled&&!1!==this.counter&&{count:this.value&&Array.isArray(this.value)?this.value.length:0,min:this.min,max:this.max}}},methods:{focus:function(){this.$refs.input.focus()}}},Sa=ja,Ca=Object(y["a"])(Sa,xa,Oa,!1,null,null,null),Ea=Ca.exports,Ra=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)},Ta=[],Ia={inheritAttrs:!1,props:Object(I["a"])(Object(I["a"])(Object(I["a"])(Object(I["a"])({},pr.props),wr.props),ts.props),{},{icon:{type:String,default:"calendar"}}),data:function(){return{date:this.value,listeners:Object(I["a"])(Object(I["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)}}},La=Ia,Aa=Object(y["a"])(La,Ra,Ta,!1,null,null,null),Ba=Aa.exports,qa=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",type:"email"}},"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.mailto,tooltip:t.$t("open"),tabindex:"-1",target:"_blank"},slot:"icon"}):t._e()],1)],1)},Na=[],Pa={inheritAttrs:!1,props:Object(I["a"])(Object(I["a"])(Object(I["a"])(Object(I["a"])({},pr.props),wr.props),ps.props),{},{link:{type:Boolean,default:!0},icon:{type:String,default:"email"}}),computed:{mailto:function(){return this.value&&this.value.length>0?"mailto:"+this.value:null}},methods:{focus:function(){this.$refs.input.focus()}}},Da=Pa,Ma=Object(y["a"])(Da,qa,Na,!1,null,null,null),Fa=Ma.exports,Ua=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:t.btnIcon},on:{click:function(e){return t.$refs.picker.toggle()}}},[t._v("\n "+t._s(t.btnLabel)+"\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,"data-invalid":t.isInvalid},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,link:t.link?e.link:null,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,"data-invalid":t.isInvalid,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)},za=[],Ha={inheritAttrs:!1,props:Object(I["a"])(Object(I["a"])({},pr.props),{},{empty:String,info:String,link:Boolean,layout:String,max:Number,multiple:Boolean,parent:String,search:Boolean,size:String,text:String,value:{type:Array,default:function(){return[]}}}),data:function(){return{selected:this.value}},computed:{btnIcon:function(){return!this.multiple&&this.selected.length>0?"refresh":"add"},btnLabel:function(){return!this.multiple&&this.selected.length>0?this.$t("change"):this.$t("add")},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"]},isInvalid:function(){return!(!this.required||0!==this.selected.length)||(!!(this.min&&this.selected.lengththis.max))},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=[]}}},Ka={mixins:[Ha],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,search:this.search,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:B.api+"/"+this.endpoints.field+"/upload",multiple:this.multiple,accept:this.uploads.accept})}}},Va=Ka,Ya=(n("4a4b"),Object(y["a"])(Va,Ua,za,!1,null,null,null)),Wa=Ya.exports,Ja=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"k-field k-gap-field"})},Ga=[],Za={},Xa=Object(y["a"])(Za,Ja,Ga,!1,null,null,null),Qa=Xa.exports,to=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=[],no={props:{label:String,numbered:Boolean}},io=no,ro=(n("19d7"),Object(y["a"])(io,to,eo,!1,null,null,null)),so=ro.exports,ao=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)},oo=[],uo={props:{label:String,text:String,theme:{type:String,default:"info"}}},lo=uo,co=(n("ddfd"),Object(y["a"])(lo,ao,oo,!1,null,null,null)),po=co.exports,fo=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("hr",{staticClass:"k-line-field"})},ho=[],mo=(n("718c"),{}),go=Object(y["a"])(mo,fo,ho,!1,null,null,null),bo=go.exports,vo=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},nativeOn:{keydown:function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"enter",13,e.key,"Enter")?null:(e.preventDefault(),t.focus(e))}}},"k-field",t.$props,!1),[n("k-input",t._g(t._b({ref:"input",attrs:{id:t._uid,theme:"field",type:"multiselect"}},"k-input",t.$props,!1),t.$listeners))],1)},ko=[],$o={inheritAttrs:!1,props:Object(I["a"])(Object(I["a"])(Object(I["a"])(Object(I["a"])({},pr.props),wr.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&&Array.isArray(this.value)?this.value.length:0,min:this.min,max:this.max}}},mounted:function(){this.$refs.input.$el.setAttribute("tabindex",0)},methods:{blur:function(t){this.$refs.input.blur(t)},focus:function(){this.$refs.input.focus()}}},yo=$o,_o=Object(y["a"])(yo,vo,ko,!1,null,null,null),wo=_o.exports,xo=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",type:"number"}},"k-input",t.$props,!1),t.$listeners))],1)},Oo=[],jo={inheritAttrs:!1,props:Object(I["a"])(Object(I["a"])(Object(I["a"])({},pr.props),wr.props),ws.props),methods:{focus:function(){this.$refs.input.focus()}}},So=jo,Co=Object(y["a"])(So,xo,Oo,!1,null,null,null),Eo=Co.exports,Ro=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:t.btnIcon},on:{click:t.open}},[t._v("\n "+t._s(t.btnLabel)+"\n ")]):t._e()],1),t.selected.length?[n("k-draggable",{attrs:{element:t.elements.list,handle:!0,list:t.selected,"data-size":t.size,"data-invalid":t.isInvalid},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:t.link?e.link:null,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,"data-invalid":t.isInvalid,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)},To=[],Io={mixins:[Ha],methods:{open:function(){if(this.disabled)return!1;this.$refs.selector.open({endpoint:this.endpoints.field,max:this.max,multiple:this.multiple,search:this.search,selected:this.selected.map((function(t){return t.id}))})}}},Lo=Io,Ao=(n("7e85"),Object(y["a"])(Lo,Ro,To,!1,null,null,null)),Bo=Ao.exports,qo=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),[t._t("options",null,{slot:"options"}),n("k-input",t._g(t._b({ref:"input",attrs:{id:t._uid,theme:"field",type:"password"}},"k-input",t.$props,!1),t.$listeners))],2)},No=[],Po={inheritAttrs:!1,props:Object(I["a"])(Object(I["a"])(Object(I["a"])(Object(I["a"])({},pr.props),wr.props),Ss.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()}}},Do=Po,Mo=Object(y["a"])(Do,qo,No,!1,null,null,null),Fo=Mo.exports,Uo=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",type:"radio"}},"k-input",t.$props,!1),t.$listeners))],1)},zo=[],Ho={inheritAttrs:!1,props:Object(I["a"])(Object(I["a"])(Object(I["a"])({},pr.props),wr.props),Ls.props),methods:{focus:function(){this.$refs.input.focus()}}},Ko=Ho,Vo=Object(y["a"])(Ko,Uo,zo,!1,null,null,null),Yo=Vo.exports,Wo=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",type:"range"}},"k-input",t.$props,!1),t.$listeners))],1)},Jo=[],Go={inheritAttrs:!1,props:Object(I["a"])(Object(I["a"])(Object(I["a"])({},pr.props),wr.props),Ds.props),methods:{focus:function(){this.$refs.input.focus()}}},Zo=Go,Xo=Object(y["a"])(Zo,Wo,Jo,!1,null,null,null),Qo=Xo.exports,tu=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",type:"select"}},"k-input",t.$props,!1),t.$listeners))],1)},eu=[],nu={inheritAttrs:!1,props:Object(I["a"])(Object(I["a"])(Object(I["a"])(Object(I["a"])({},pr.props),wr.props),Ks.props),{},{icon:{type:String,default:"angle-down"}}),methods:{focus:function(){this.$refs.input.focus()}}},iu=nu,ru=Object(y["a"])(iu,tu,eu,!1,null,null,null),su=ru.exports,au=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:{"data-invalid":t.isInvalid,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-invalid":t.isInvalid,"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,dir:t.direction,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(r,s){return n("td",{key:s,staticClass:"k-structure-table-column",style:"width:"+t.width(r.width),attrs:{title:r.label,"data-align":r.align},on:{click:function(e){return t.jump(i,s)}}},[!1===t.columnIsEmpty(e[s])?[t.previewExists(r.type)?n("k-"+r.type+"-field-preview",{tag:"component",attrs:{value:e[s],column:r,field:t.fields[s]},on:{input:function(e){return t.update(i,s,e)}}}):[n("p",{staticClass:"k-structure-table-text"},[t._v("\n "+t._s(r.before)+" "+t._s(t.displayText(t.fields[s],e[s])||"–")+" "+t._s(r.after)+"\n ")])]]:t._e()],2)})),n("td",{staticClass:"k-structure-table-options"},[t.duplicate&&t.more&&null===t.currentIndex?[n("k-button",{key:i,ref:"actionsToggle",refInFor:!0,staticClass:"k-structure-table-options-button",attrs:{icon:"dots"},on:{click:function(e){t.$refs[i+"-actions"][0].toggle()}}}),n("k-dropdown-content",{ref:i+"-actions",refInFor:!0,attrs:{align:"right"}},[n("k-dropdown-item",{attrs:{icon:"copy"},on:{click:function(e){return t.duplicateItem(i)}}},[t._v(t._s(t.$t("duplicate")))]),n("k-dropdown-item",{attrs:{icon:"remove"},on:{click:function(e){return t.confirmRemove(i)}}},[t._v(t._s(t.$t("remove")))])],1)]:[n("k-button",{staticClass:"k-structure-table-options-button",attrs:{tooltip:t.$t("remove"),icon:"remove"},on:{click:function(e){return t.confirmRemove(i)}}})]],2)],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:{"submit-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)},ou=[],uu={inheritAttrs:!1,props:Object(I["a"])(Object(I["a"])({},pr.props),{},{columns:Object,duplicate:{type:Boolean,default:!0},empty:String,fields:Object,limit:Number,max:Number,min:Number,prepend:{type:Boolean,default:!1},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:{direction:function(){return is(this)},dragOptions:function(){return{disabled:!this.isSortable,fallbackClass:"k-sortable-row-fallback"}},formFields:function(){var t=this,e={};return Object.keys(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)},isInvalid:function(){return!0!==this.disabled&&(!!(this.min&&this.items.lengththis.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={};Object.keys(this.fields).forEach((function(n){var i=t.fields[n];null!==i.default?e[n]=t.$helper.clone(i.default):e[n]=null})),this.currentIndex="new",this.currentModel=e,this.createForm()},addItem:function(t){!0===this.prepend?this.items.unshift(t):this.items.push(t)},beforePaginate:function(){return this.save(this.currentModel)},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("content/enable")},columnIsEmpty:function(t){return void 0===t||null===t||""===t||("object"===Object(fe["a"])(t)&&0===Object.keys(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("content/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=this.$library.dayjs(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 r=t.options.filter((function(t){return t.value===e}))[0];return r?r.text:null}return"object"===Object(fe["a"])(e)&&null!==e?"…":e.toString()},duplicateItem:function(t){this.addItem(this.items[t]),this.onInput()},escape:function(){var t=this;if("new"===this.currentIndex){var e=Object.values(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===Array.isArray(t)?[]:this.sort(t)},onInput:function(){this.$emit("input",this.items)},open:function(t,e){this.currentIndex=t,this.currentModel=this.$helper.clone(this.items[t]),this.createForm(e)},paginate:function(t){this.open(t.offset)},paginateItems:function(t){this.page=t.page},previewExists:function(t){return this.$helper.isComponent("k-".concat(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.addItem(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})):Promise.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 parseFloat(100/i*n,2).toFixed(2)+"%"},update:function(t,e,n){this.items[t][e]=n,this.onInput()}}},lu=uu,cu=(n("088c"),Object(y["a"])(lu,au,ou,!1,null,null,null)),pu=cu.exports,du=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",type:"tags"}},"k-input",t.$props,!1),t.$listeners))],1)},fu=[],hu={inheritAttrs:!1,props:Object(I["a"])(Object(I["a"])(Object(I["a"])(Object(I["a"])({},pr.props),wr.props),Zs.props),{},{counter:{type:Boolean,default:!0}}),computed:{counterOptions:function(){return null!==this.value&&!this.disabled&&!1!==this.counter&&{count:this.value&&Array.isArray(this.value)?this.value.length:0,min:this.min,max:this.max}}},methods:{focus:function(){this.$refs.input.focus()}}},mu=hu,gu=Object(y["a"])(mu,du,fu,!1,null,null,null),bu=gu.exports,vu=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",type:"tel"}},"k-input",t.$props,!1),t.$listeners))],1)},ku=[],$u={inheritAttrs:!1,props:Object(I["a"])(Object(I["a"])(Object(I["a"])(Object(I["a"])({},pr.props),wr.props),ea.props),{},{icon:{type:String,default:"phone"}}),methods:{focus:function(){this.$refs.input.focus()}}},yu=$u,_u=Object(y["a"])(yu,vu,ku,!1,null,null,null),wu=_u.exports,xu=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)},Ou=[],ju={inheritAttrs:!1,props:Object(I["a"])(Object(I["a"])(Object(I["a"])(Object(I["a"])({},pr.props),wr.props),os.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()}}},Su=ju,Cu=(n("b746"),Object(y["a"])(Su,xu,Ou,!1,null,null,null)),Eu=Cu.exports,Ru=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)},Tu=[],Iu={inheritAttrs:!1,props:Object(I["a"])(Object(I["a"])(Object(I["a"])(Object(I["a"])({},pr.props),wr.props),oa.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()}}},Lu=Iu,Au=Object(y["a"])(Lu,Ru,Tu,!1,null,null,null),Bu=Au.exports,qu=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",type:"time"}},"k-input",t.$props,!1),t.$listeners))],1)},Nu=[],Pu={inheritAttrs:!1,props:Object(I["a"])(Object(I["a"])(Object(I["a"])(Object(I["a"])({},pr.props),wr.props),fa.props),{},{icon:{type:String,default:"clock"}}),methods:{focus:function(){this.$refs.input.focus()}}},Du=Pu,Mu=Object(y["a"])(Du,qu,Nu,!1,null,null,null),Fu=Mu.exports,Uu=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",type:"toggle"}},"k-input",t.$props,!1),t.$listeners))],1)},zu=[],Hu={inheritAttrs:!1,props:Object(I["a"])(Object(I["a"])(Object(I["a"])({},pr.props),wr.props),ka.props),methods:{focus:function(){this.$refs.input.focus()}}},Ku=Hu,Vu=Object(y["a"])(Ku,Uu,zu,!1,null,null,null),Yu=Vu.exports,Wu=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",type:"url"}},"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)},Ju=[],Gu={inheritAttrs:!1,props:Object(I["a"])(Object(I["a"])(Object(I["a"])(Object(I["a"])({},pr.props),wr.props),wa.props),{},{link:{type:Boolean,default:!0},icon:{type:String,default:"url"}}),methods:{focus:function(){this.$refs.input.focus()}}},Zu=Gu,Xu=Object(y["a"])(Zu,Wu,Ju,!1,null,null,null),Qu=Xu.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:t.btnIcon},on:{click:t.open}},[t._v("\n "+t._s(t.btnLabel)+"\n ")]):t._e()],1),t.selected.length?[n("k-draggable",{attrs:{element:t.elements.list,list:t.selected,handle:!0,"data-invalid":t.isInvalid},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.text,info:e.info,link:t.link?t.$api.users.link(e.id):null,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:{"data-invalid":t.isInvalid,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)},el=[],nl={mixins:[Ha],methods:{open:function(){if(this.disabled)return!1;this.$refs.selector.open({endpoint:this.endpoints.field,max:this.max,multiple:this.multiple,search:this.search,selected:this.selected.map((function(t){return t.id}))})}}},il=nl,rl=(n("7f6e"),Object(y["a"])(il,tl,el,!1,null,null,null)),sl=rl.exports,al=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)])])},ol=[],ul=function(t){this.command("insert",(function(e,n){var i=[];return n.split("\n").forEach((function(e,n){var r="ol"===t?n+1+".":"-";i.push(r+" "+e)})),i.join("\n")}))},ll={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:(Array.isArray(this.buttons)&&(n=this.buttons),!0!==Array.isArray(this.buttons)&&(n=this.$options.layout),n.forEach((function(n,r){if("|"===n)t["divider-"+r]={divider:!0};else if(i[n]){var s=i[n];t[n]=s,s.shortcut&&(e[s.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;Object.keys(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:"k",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 ul.apply(this,["ul"])}},ol:{label:this.$t("toolbar.button.ol"),icon:"list-numbers",command:function(){return ul.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)}}}},cl=ll,pl=(n("df0d"),Object(y["a"])(cl,al,ol,!1,null,null,null)),dl=pl.exports,fl=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-dialog",{ref:"dialog",attrs:{"submit-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=[],ml={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()}}},gl=ml,bl=Object(y["a"])(gl,fl,hl,!1,null,null,null),vl=bl.exports,kl=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-dialog",{ref:"dialog",attrs:{"submit-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)},$l=[],yl={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()}}},_l=yl,wl=Object(y["a"])(_l,kl,$l,!1,null,null,null),xl=wl.exports,Ol=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()},jl=[],Sl=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"list",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"1/1";if(!t||0===t.length)return!1;var i=null,r=null;if(t.list?(i=t[e].url,r=t[e].srcset):(i=t.url,r=t.srcset),!i)return!1;var s={src:i,srcset:r,back:t.back||"black",cover:t.cover};return"cards"===e&&(s.ratio=t.ratio||"3/2",s.sizes=Cl(n)),s};function Cl(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"}}var El,Rl,Tl,Il,Ll={props:{value:Array,field:Object},methods:{imageOptions:function(t){var e=Sl(t.image);return e.src?Object(I["a"])(Object(I["a"])({},e),{},{back:"pattern",cover:!1},this.field.image||{}):{src:t.url}}}},Al=Ll,Bl=(n("21dc"),Object(y["a"])(Al,Ol,jl,!1,null,null,null)),ql=Bl.exports,Nl=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)},Pl=[],Dl={props:{column:{type:Object,default:function(){return{}}},value:String},computed:{link:function(){return this.value}}},Ml=Dl,Fl=(n("977f"),Object(y["a"])(Ml,Nl,Pl,!1,null,null,null)),Ul=Fl.exports,zl={extends:Ul,computed:{link:function(){return this.value&&this.value.length>0?"mailto:"+this.value:null}}},Hl=zl,Kl=Object(y["a"])(Hl,El,Rl,!1,null,null,null),Vl=Kl.exports,Yl=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()},Wl=[],Jl={props:{value:Array}},Gl=Jl,Zl=(n("d0c1"),Object(y["a"])(Gl,Yl,Wl,!1,null,null,null)),Xl=Zl.exports,Ql=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-input",{staticClass:"k-toggle-field-preview",attrs:{text:t.text,type:"toggle"},on:{input:function(e){return t.$emit("input",e)}},model:{value:t.value,callback:function(e){t.value=e},expression:"value"}})},tc=[],ec={props:{field:Object,value:Boolean,column:Object},computed:{text:function(){return!1!==this.column.text?this.field.text:null}}},nc=ec,ic=(n("1c4e"),Object(y["a"])(nc,Ql,tc,!1,null,null,null)),rc=ic.exports,sc=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()},ac=[],oc={props:{value:Array}},uc=oc,lc=(n("3a85"),Object(y["a"])(uc,sc,ac,!1,null,null,null)),cc=lc.exports,pc=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()])},dc=[],fc=(n("6f7b"),{}),hc=Object(y["a"])(fc,pc,dc,!1,null,null,null),mc=hc.exports,gc=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)},bc=[],vc={props:{theme:String,text:String}},kc=vc,$c=(n("7dc7"),Object(y["a"])(kc,gc,bc,!1,null,null,null)),yc=$c.exports,_c=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)},wc=[],xc={inheritAttrs:!1,props:{column:String,flag:Object,icon:{type:Object,default:function(){return{type:"file",back:"black"}}},image:[Object,Boolean],info:String,link:[String,Function],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?this.$helper.ratio(this.icon.ratio):this.$helper.ratio("3/2")},imageOptions:function(){return Sl(this.image,"cards",this.column)}}},Oc=xc,jc=(n("c119"),Object(y["a"])(Oc,_c,wc,!1,null,null,null)),Sc=jc.exports,Cc=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=[],Rc={props:{cards:Array}},Tc=Rc,Ic=(n("f56d"),Object(y["a"])(Tc,Cc,Ec,!1,null,null,null)),Lc=Ic.exports,Ac=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)},Bc=[],qc={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(fe["a"])(this.pagination)?{}:this.pagination;return Object(I["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=qc,Pc=(n("8c28"),Object(y["a"])(Nc,Ac,Bc,!1,null,null,null)),Dc=Pc.exports,Mc=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"k-column",attrs:{"data-width":t.width,"data-sticky":t.sticky}},[n("div",[t._t("default")],2)])},Fc=[],Uc={props:{width:String,sticky:Boolean}},zc=Uc,Hc=(n("c9cb"),Object(y["a"])(zc,Mc,Fc,!1,null,null,null)),Kc=Hc.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)},Yc=[],Wc={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():!1===this.$helper.isUploadEvent(t)?this.reset():(this.$events.$emit("dropzone.drop"),this.files=t.dataTransfer.files,this.$emit("drop",this.files),void this.reset())},onEnter:function(t){!1===this.disabled&&this.$helper.isUploadEvent(t)&&(this.dragging=!0)},onLeave:function(){this.reset()},onOver:function(t){!1===this.disabled&&this.$helper.isUploadEvent(t)&&(t.dataTransfer.dropEffect="copy",this.over=!0)}}},Jc=Wc,Gc=(n("414d"),Object(y["a"])(Jc,Vc,Yc,!1,null,null,null)),Zc=Gc.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)},Qc=[],tp={props:{text:String,icon:String,layout:{type:String,default:"list"}}},ep=tp,np=(n("ba8f"),Object(y["a"])(ep,Xc,Qc,!1,null,null,null)),ip=np.exports,rp=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("k-link",{staticClass:"k-file-preview-image-link",attrs:{to: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)],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&&(t.file.dimensions.width||t.file.dimensions.height)?n("p",[t._v("\n "+t._s(t.file.dimensions.width)+"×"+t._s(t.file.dimensions.height)+" "+t._s(t.$t("pixel"))+"\n ")]):n("p",[t._v("—")])]),n("li",[n("h3",[t._v(t._s(t.$t("orientation")))]),t.file.dimensions&&t.file.dimensions.orientation?n("p",[t._v("\n "+t._s(t.$t("orientation."+t.file.dimensions.orientation))+"\n ")]):n("p",[t._v("—")])])])])])],1)},sp=[],ap={props:{file:Object}},op=ap,up=(n("696b"),Object(y["a"])(op,rp,sp,!1,null,null,null)),lp=up.exports,cp=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)},pp=[],dp={props:{gutter:String}},fp=dp,hp=(n("5b23"),Object(y["a"])(fp,cp,pp,!1,null,null,null)),mp=hp.exports,gp=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)},bp=[],vp={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"}}}}},kp=vp,$p=(n("53c5"),Object(y["a"])(kp,gp,bp,!1,null,null,null)),yp=$p.exports,_p=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)},wp=[],xp={props:{items:Array}},Op=xp,jp=(n("c857"),Object(y["a"])(Op,_p,wp,!1,null,null,null)),Sp=jp.exports,Cp=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",{staticClass:"k-list-item-content",attrs:{to:t.link,target:t.target}},[t.image?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):t._e(),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({staticClass:"k-list-item-status",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)},Ep=[],Rp={inheritAttrs:!1,props:{element:{type:String,default:"li"},image:[Object,Boolean],icon:{type:Object,default:function(){return{type:"file",back:"black"}}},sortable:Boolean,text:String,target:String,info:String,link:[String,Function],flag:Object,options:[Array,Function]},computed:{imageOptions:function(){return Sl(this.image)}}},Tp=Rp,Ip=(n("fa6a"),Object(y["a"])(Tp,Cp,Ep,!1,null,null,null)),Lp=Ip.exports,Ap=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()},Bp=[],qp={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)}}}},Np=qp,Pp=Object(y["a"])(Np,Ap,Bp,!1,null,null,null),Dp=Pp.exports,Mp=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)},Fp=[],Up={props:{align:String}},zp=Up,Hp=(n("daa8"),Object(y["a"])(zp,Mp,Fp,!1,null,null,null)),Kp=Hp.exports,Vp=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)},Yp=[],Wp=n("310e"),Jp=n.n(Wp),Gp={components:{draggable:Jp.a},props:{element:String,handle:[String,Boolean],list:[Array,Object],move:Function,options:Object},data:function(){var t=this;return{listeners:Object(I["a"])(Object(I["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(I["a"])({fallbackClass:"k-sortable-fallback",fallbackOnBody:!0,forceFallback:!0,ghostClass:"k-sortable-ghost",handle:t,scroll:document.querySelector(".k-panel-view")},this.options)}}},Zp=Gp,Xp=Object(y["a"])(Zp,Vp,Yp,!1,null,null,null),Qp=Xp.exports,td={data:function(){return{error:null}},errorCaptured:function(t){return B.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]}},ed=td,nd=Object(y["a"])(ed,Tl,Il,!1,null,null,null),id=nd.exports,rd=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)},sd=[],ad={props:{link:String,size:{type:String},tag:{type:String,default:"h2"},theme:{type:String}}},od=ad,ud=(n("f8a7"),Object(y["a"])(od,rd,sd,!1,null,null,null)),ld=ud.exports,cd=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.isEmoji?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,size:String,type:String},computed:{isEmoji:function(){return this.$helper.string.hasEmoji(this.type)}}},fd=dd,hd=(n("3342"),Object(y["a"])(fd,cd,pd,!1,null,null,null)),md=hd.exports,gd=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=[],vd={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 this.$helper.ratio(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=vd,$d=(n("0d56"),Object(y["a"])(kd,gd,bd,!1,null,null,null)),yd=$d.exports,_d=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")])},wd=[],xd={props:{value:{type:Number,default:0}},data:function(){return{state:this.value}},methods:{set:function(t){this.state=t}}},Od=xd,jd=(n("9799"),Object(y["a"])(Od,_d,wd,!1,null,null,null)),Sd=jd.exports,Cd=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"}})])])},Ed=[],Rd=(n("35cb"),{}),Td=Object(y["a"])(Rd,Cd,Ed,!1,null,null,null),Id=Td.exports,Ld=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)},Ad=[],Bd={props:{align:String,size:String,theme:String}},qd=Bd,Nd=(n("b0d6"),Object(y["a"])(qd,Ld,Ad,!1,null,null,null)),Pd=Nd.exports,Dd=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(t.component,t._g(t._b({ref:"button",tag:"component"},"component",t.$props,!1),t.$listeners),[t._t("default")],2)},Md=[],Fd={inheritAttrs:!1,props:{autofocus:Boolean,current:[String,Boolean],disabled:Boolean,icon:String,id:[String,Number],link:String,responsive:Boolean,rel:String,role:String,target:String,tabindex:String,theme:String,tooltip:String,type:{type:String,default:"button"}},computed:{component:function(){return!0===this.disabled?"k-button-disabled":this.link?"k-button-link":"k-button-native"}},methods:{focus:function(){this.$refs.button.focus&&this.$refs.button.focus()},tab:function(){this.$refs.button.tab&&this.$refs.button.tab()},untab:function(){this.$refs.button.untab&&this.$refs.button.untab()}}},Ud=Fd,zd=(n("3787"),Object(y["a"])(Ud,Dd,Md,!1,null,null,null)),Hd=zd.exports,Kd=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("span",{staticClass:"k-button",attrs:{id:t.id,"data-disabled":!0,"data-responsive":t.responsive,"data-theme":t.theme,title:t.tooltip}},[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)},Vd=[],Yd={inheritAttrs:!1,props:{icon:String,id:[String,Number],responsive:Boolean,theme:String,tooltip:String}},Wd=Yd,Jd=(n("16eb"),Object(y["a"])(Wd,Kd,Vd,!1,null,null,null)),Gd=Jd.exports,Zd=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"k-button-group"},[t._t("default")],2)},Xd=[],Qd=(n("a567"),{}),tf=Object(y["a"])(Qd,Zd,Xd,!1,null,null,null),ef=tf.exports,nf=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-link",t._g({staticClass:"k-button",attrs:{"aria-current":t.current,autofocus:t.autofocus,id:t.id,"data-theme":t.theme,"data-responsive":t.responsive,rel:t.rel,role:t.role,tabindex:t.tabindex,target:t.target,title:t.tooltip,to:t.link}},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)},rf=[],sf={inheritAttrs:!1,props:{autofocus:Boolean,current:[String,Boolean],icon:String,id:[String,Number],link:String,rel:String,responsive:Boolean,role:String,target:String,tabindex:String,theme:String,tooltip:String}},af=sf,of=Object(y["a"])(af,nf,rf,!1,null,null,null),uf=of.exports,lf=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("button",t._g({staticClass:"k-button",attrs:{"aria-current":t.current,autofocus:t.autofocus,id:t.id,"data-theme":t.theme,"data-responsive":t.responsive,role:t.role,tabindex:t.tabindex,title:t.tooltip,type: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)},cf=[],pf={mounted:function(){this.$el.addEventListener("keyup",this.onTab,!0),this.$el.addEventListener("blur",this.onUntab,!0)},destroyed:function(){this.$el.removeEventListener("keyup",this.onTab,!0),this.$el.removeEventListener("blur",this.onUntab,!0)},methods:{focus:function(){this.$el.focus&&this.$el.focus()},onTab:function(t){9===t.keyCode&&this.$el.setAttribute("data-tabbed",!0)},onUntab:function(){this.$el.removeAttribute("data-tabbed")},tab:function(){this.$el.focus(),this.$el.setAttribute("data-tabbed",!0)},untab:function(){this.$el.removeAttribute("data-tabbed")}}},df={mixins:[pf],inheritAttrs:!1,props:{autofocus:Boolean,current:[String,Boolean],icon:String,id:[String,Number],responsive:Boolean,role:String,tabindex:String,theme:String,tooltip:String,type:{type:String,default:"button"}}},ff=df,hf=Object(y["a"])(ff,lf,cf,!1,null,null,null),mf=hf.exports,gf=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)},bf=[],vf=(n("f95f"),{}),kf=Object(y["a"])(vf,gf,bf,!1,null,null,null),$f=kf.exports,yf=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()},_f=[],wf=null,xf={props:{options:[Array,Function],align:String},data:function(){return{items:[],current:-1,isOpen:!1}},methods:{fetchOptions:function(t){var e=this;return Object(j["a"])(regeneratorRuntime.mark((function n(){var i,r;return regeneratorRuntime.wrap((function(n){while(1)switch(n.prev=n.next){case 0:if(!e.options){n.next=14;break}if("string"!==typeof e.options){n.next=11;break}return n.next=4,fetch(e.options);case 4:return i=n.sent,n.next=7,i.json();case 7:return r=n.sent,n.abrupt("return",t(r));case 11:"function"===typeof e.options?e.options(t):Array.isArray(e.options)&&t(e.options);case 12:n.next=15;break;case 14:return n.abrupt("return",t(e.items));case 15:case"end":return n.stop()}}),n)})))()},open:function(){var t=this;this.reset(),wf&&wf!==this&&wf.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"),wf=t}))},reset:function(){this.current=-1,this.$events.$off("keydown",this.navigate),this.$events.$off("click",this.close)},close:function(){this.reset(),this.isOpen=wf=!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;case"Tab":while(1){if(this.current++,this.current>this.$children.length-1){this.close(),this.$emit("leave",t.code);break}if(this.$children[this.current]&&!1===this.$children[this.current].disabled)break}break}}}},Of=xf,jf=(n("98a1"),Object(y["a"])(Of,yf,_f,!1,null,null,null)),Sf=jf.exports,Cf=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)},Ef=[],Rf={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(I["a"])(Object(I["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()}}},Tf=Rf,If=(n("580a"),Object(y["a"])(Tf,Cf,Ef,!1,null,null,null)),Lf=If.exports,Af=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)},Bf=[],qf={mixins:[pf],props:{disabled:Boolean,rel:String,tabindex:[String,Number],target:String,title:String,to:[String,Function]},data:function(){return{relAttr:"_blank"===this.target?"noreferrer noopener":this.rel,listeners:Object(I["a"])(Object(I["a"])({},this.$listeners),{},{click:this.onClick})}},computed:{href:function(){return"function"===typeof this.to?"":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;"function"===typeof this.to&&(t.preventDefault(),this.to()),this.isRoutable(t)&&(t.preventDefault(),this.$go(this.to)),this.$emit("click",t)}}},Nf=qf,Pf=(n("cc79"),Object(y["a"])(Nf,Af,Bf,!1,null,null,null)),Df=Pf.exports,Mf=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()},Ff=[],Uf={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)}}},zf=Uf,Hf=Object(y["a"])(zf,Mf,Ff,!1,null,null,null),Kf=Hf.exports,Vf=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",{staticClass:"k-pagination-settings"},[n("label",{attrs:{for:"k-pagination-page"}},[n("span",[t._v(t._s(t.pageLabel)+":")]),n("select",{ref:"page",attrs:{id:"k-pagination-page"}},t._l(t.pages,(function(e){return n("option",{key:e,domProps:{selected:t.page===e,value:e}},[t._v("\n "+t._s(e)+"\n ")])})),0)]),n("k-button",{attrs:{icon:"check"},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()},Yf=[],Wf={props:{align:{type:String,default:"left"},details:{type:Boolean,default:!1},dropdown:{type:Boolean,default:!0},validate:{type:Function,default:function(){return Promise.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:function(){return this.$t("pagination.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=parseInt(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: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}}}},Jf=Wf,Gf=(n("a66d"),Object(y["a"])(Jf,Vf,Yf,!1,null,null,null)),Zf=Gf.exports,Xf=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)},Qf=[],th={props:{prev:{type:Object,default:function(){return{disabled:!0,link:"#"}}},next:{type:Object,default:function(){return{disabled:!0,link:"#"}}}}},eh=th,nh=(n("7a7d"),Object(y["a"])(eh,Xf,Qf,!1,null,null,null)),ih=nh.exports,rh=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:t.close}},[n("strong",[t._v(t._s(e.title))]),n("small",[t._v(t._s(e.info))])])],1)})),0)])])},sh=[],ah={data:function(){return{items:[],q:null,selected:-1,currentType:"users"===this.$store.state.view?"users":"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"},files:{label:this.$t("files"),icon:"image",endpoint:"files/search"},users:{label:this.$t("users"),icon:"users",endpoint:"users/search"}}}},watch:{q:rt((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--}}},oh=ah,uh=(n("4cb2"),Object(y["a"])(oh,rh,sh,!1,null,null,null)),lh=uh.exports,ch=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()])},ph=[],dh={props:{removable:Boolean,size:String},methods:{remove:function(){this.removable&&this.$emit("remove")},focus:function(){this.$refs.button.focus()}}},fh=dh,hh=(n("021f"),Object(y["a"])(fh,ch,ph,!1,null,null,null)),mh=hh.exports,gh=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",{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",{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,tooltip:t.$t("license.unregistered"),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-form-indicator")],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()},bh=[],vh=Object(I["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),kh={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 vh[this.$store.state.view]},views:function(){return vh},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}}},$h=kh,yh=(n("1e3b"),Object(y["a"])($h,gh,bh,!1,null,null,null)),_h=yh.exports,wh=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,sticky:e.sticky}},[t._l(e.sections,(function(r,s){return[t.meetsCondition(r)?[t.exists(r.type)?n("k-"+r.type+"-section",t._b({key:t.parent+"-column-"+i+"-section-"+s+"-"+t.blueprint,tag:"component",class:"k-section k-section-name-"+r.name,attrs:{name:r.name,parent:t.parent,blueprint:t.blueprint,column:e.width},on:{submit:function(e){return t.$emit("submit",e)}}},"component",r,!1)):[n("k-box",{key:t.parent+"-column-"+i+"-section-"+s,attrs:{text:t.$t("error.section.type.invalid",{type:r.type}),theme:"negative"}})]]:t._e()]}))],2)})),1)},xh=[],Oh={props:{parent:String,blueprint:String,columns:[Array,Object]},computed:{content:function(){return this.$store.getters["content/values"]()}},methods:{exists:function(t){return this.$helper.isComponent("k-".concat(t,"-section"))},meetsCondition:function(t){var e=this;if(!t.when)return!0;var n=!0;return Object.keys(t.when).forEach((function(i){var r=e.content[i.toLowerCase()],s=t.when[i];r!==s&&(n=!1)})),n}}},jh=Oh,Sh=(n("6bcd"),Object(y["a"])(jh,wh,xh,!1,null,null,null)),Ch=Sh.exports,Eh=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)},Rh=[],Th={props:{blueprint:String,help:String,name:String,parent:String},methods:{load:function(){return this.$api.get(this.parent+"/sections/"+this.name)}}},Ih={mixins:[Th],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}))}},Lh=Ih,Ah=(n("4333"),Object(y["a"])(Lh,Eh,Rh,!1,null,null,null)),Bh=Ah.exports,qh=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:t.$t("section.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("\n "+t._s(t.$t("error.section.notLoaded",{name:t.name}))+":\n ")]),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,"data-invalid":t.isInvalid},on:{change:t.sort,paginate:t.paginate,action:t.action}}):[n("k-empty",{attrs:{layout:t.options.layout,"data-invalid":t.isInvalid,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()},Nh=[],Ph={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},isInvalid:function(){return!!(this.options.min&&this.data.lengththis.options.max)},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;return Object(j["a"])(regeneratorRuntime.mark((function n(){var i;return regeneratorRuntime.wrap((function(n){while(1)switch(n.prev=n.next){case 0:return t||(e.isLoading=!0),null===e.pagination.page&&(e.pagination.page=localStorage.getItem(e.paginationId)||1),n.prev=2,n.next=5,e.$api.get(e.parent+"/sections/"+e.name,{page:e.pagination.page});case 5:i=n.sent,e.options=i.options,e.pagination=i.pagination,e.data=e.items(i.data),n.next=14;break;case 11:n.prev=11,n.t0=n["catch"](2),e.error=n.t0.message;case 14:return n.prev=14,e.isLoading=!1,n.finish(14);case 17:case"end":return n.stop()}}),n,null,[[2,11,14,17]])})))()},paginate:function(t){localStorage.setItem(this.paginationId,t.page),this.pagination=t,this.reload()},reload:function(){this.load(!0)}}},Dh={mixins:[Ph],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+"/blueprints",this.name)},action:function(t,e){var n=this;switch(e){case"duplicate":this.$refs.duplicate.open(t.id);break;case"preview":var i=window.open("","_blank");i.document.write="...",this.$api.pages.preview(t.id).then((function(t){i.location.href=t})).catch((function(t){n.$store.dispatch("notification/error",t)}));break;case"rename":this.$refs.rename.open(t.id);break;case"url":this.$refs.url.open(t.id);break;case"status":this.$refs.status.open(t.id);break;case"template":this.$refs.template.open(t.id);break;case"remove":if(this.data.length<=this.options.min){var r=this.options.min>1?"plural":"singular";this.$store.dispatch("notification/error",{message:this.$t("error.section.pages.min."+r,{section:this.options.headline||this.name,min:this.options.min})});break}this.$refs.remove.open(t.id);break;default:throw new Error("Invalid action")}},items:function(t){var e=this;return t.map((function(t){var n=!1!==t.permissions.changeStatus;return t.flag={class:"k-status-flag k-status-flag-"+t.status,tooltip:n?e.$t("page.status"):"".concat(e.$t("page.status")," (").concat(e.$t("disabled"),")"),icon:n?"circle":"protected",disabled:!n,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,r=t[n].newIndex+1+this.pagination.offset;this.$api.pages.status(i.id,"listed",r).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")}}},Mh=Dh,Fh=Object(y["a"])(Mh,qh,Nh,!1,null,null,null),Uh=Fh.exports,zh=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:t.$t("section.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,"data-invalid":t.isInvalid},on:{sort:t.sort,paginate:t.paginate,action:t.action}}):[n("k-empty",{attrs:{layout:t.options.layout,"data-invalid":t.isInvalid,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()},Hh=[],Kh={mixins:[Ph],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){switch(e){case"edit":this.$go(t.link);break;case"download":window.open(t.url);break;case"rename":this.$refs.rename.open(t.parent,t.filename);break;case"replace":this.$refs.upload.open({url:B.api+"/"+this.$api.files.url(t.parent,t.filename),accept:"."+t.extension+","+t.mime,multiple:!1});break;case"remove":if(this.data.length<=this.options.min){var n=this.options.min>1?"plural":"singular";this.$store.dispatch("notification/error",{message:this.$t("error.section.files.min."+n,{section:this.options.headline||this.name,min:this.options.min})});break}this.$refs.remove.open(t.parent,t.filename);break}},drop:function(t){if(!1===this.add)return!1;this.$refs.upload.drop(t,Object(I["a"])(Object(I["a"])({},this.add),{},{url:B.api+"/"+this.add.api}))},items:function(t){var e=this;return t.map((function(t){return t.options=function(){var n=Object(j["a"])(regeneratorRuntime.mark((function n(i){var r;return regeneratorRuntime.wrap((function(n){while(1)switch(n.prev=n.next){case 0:return n.prev=0,n.next=3,e.$api.files.options(t.parent,t.filename,"list");case 3:r=n.sent,i(r),n.next=10;break;case 7:n.prev=7,n.t0=n["catch"](0),e.$store.dispatch("notification/error",n.t0);case 10:case"end":return n.stop()}}),n,null,[[0,7]])})));return function(t){return n.apply(this,arguments)}}(),t.sortable=e.options.sortable,t.column=e.column,t}))},replace:function(t){this.$refs.upload.open({url:B.api+"/"+this.$api.files.url(t.parent,t.filename),accept:t.mime,multiple:!1})},sort:function(t){var e=this;return Object(j["a"])(regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){while(1)switch(n.prev=n.next){case 0:if(!1!==e.options.sortable){n.next=2;break}return n.abrupt("return",!1);case 2:return t=t.map((function(t){return t.id})),n.prev=3,n.next=6,e.$api.patch(e.options.apiUrl+"/files/sort",{files:t,index:e.pagination.offset});case 6:e.$store.dispatch("notification/success",":)"),n.next=13;break;case 9:n.prev=9,n.t0=n["catch"](3),e.reload(),e.$store.dispatch("notification/error",n.t0.message);case 13:case"end":return n.stop()}}),n,null,[[3,9]])})))()},update:function(){this.$events.$emit("model.update")},upload:function(){if(!1===this.add)return!1;this.$refs.upload.open(Object(I["a"])(Object(I["a"])({},this.add),{},{url:B.api+"/"+this.add.api}))},uploaded:function(){this.$events.$emit("file.create"),this.$events.$emit("model.update"),this.$store.dispatch("notification/success",":)")}}},Vh=Kh,Yh=Object(y["a"])(Vh,zh,Hh,!1,null,null,null),Wh=Yh.exports,Jh=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,disabled:null!==t.$store.state.content.status.lock},on:{input:t.input,submit:t.onSubmit}})],2)},Gh=[],Zh={mixins:[Th],inheritAttrs:!1,data:function(){return{fields:{},isLoading:!0,issue:null}},computed:{language:function(){return this.$store.state.languages.current},values:function(){return this.$store.getters["content/values"]()}},watch:{language:function(){this.fetch()}},created:function(){this.fetch()},methods:{input:function(t,e,n){this.$store.dispatch("content/update",[n,t[n]])},fetch:function(){var t=this;return Object(j["a"])(regeneratorRuntime.mark((function e(){var n;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,t.load();case 3:n=e.sent,t.fields=n.fields,Object.keys(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}})),e.next=11;break;case 8:e.prev=8,e.t0=e["catch"](0),t.issue=e.t0;case 11:return e.prev=11,t.isLoading=!1,e.finish(11);case 14:case"end":return e.stop()}}),e,null,[[0,8,11,14]])})))()},onSubmit:function(t){this.$events.$emit("keydown.cmd.s",t)}}},Xh=Zh,Qh=(n("7d5d"),Object(y["a"])(Xh,Jh,Gh,!1,null,null,null)),tm=Qh.exports,em=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)},nm=[],im={grid:function(){return!(!window.CSS||!window.CSS.supports("display","grid"))},fetch:function(){return void 0!==window.fetch},all:function(){return this.fetch()&&this.grid()}},rm={computed:{hasFetchSupport:function(){return im.fetch()},hasGridSupport:function(){return im.grid()}},created:function(){this.$store.dispatch("content/current",null),im.all()&&this.$go("/")}},sm=rm,am=(n("d6fc"),Object(y["a"])(sm,em,nm,!1,null,null,null)),om=am.exports,um=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)},lm=[],cm={props:{plugin:String},beforeRouteEnter:function(t,e,n){n((function(t){t.$store.dispatch("breadcrumb",[]),t.$store.dispatch("content/current",null)}))},watch:{plugin:{handler:function(){this.$store.dispatch("view",this.plugin)},immediate:!0}}},pm=cm,dm=Object(y["a"])(pm,um,lm,!1,null,null,null),fm=dm.exports,hm=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)])},mm=[],gm=(n("d221"),{}),bm=Object(y["a"])(gm,hm,mm,!1,null,null,null),vm=bm.exports,km=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.parent,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)},$m=[],ym={computed:{isLocked:function(){return null!==this.$store.state.content.status.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)}}},_m={mixins:[ym],props:{path:{type:String},filename:{type:String,required:!0}},data:function(){return{file:{id:null,parent:null,filename:"",url:"",prev:null,next:null,panelIcon:null,panelImage:null,mime:null,content:{}},parent:null,permissions:{changeName:!1,delete:!1},issue:null,tabs:[],tab:null,options:null}},computed:{uploadApi:function(){return B.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;return Object(j["a"])(regeneratorRuntime.mark((function e(){var n;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,t.$api.files.get(t.path,t.filename,{view:"panel"});case 3:n=e.sent,t.file=Object(I["a"])(Object(I["a"])({},n),{},{next:n.nextWithTemplate,prev:n.prevWithTemplate,url:n.url}),t.parent=t.$api.files.url(t.path,n.filename),t.tabs=n.blueprint.tabs,t.permissions=n.options,t.options=function(){var e=Object(j["a"])(regeneratorRuntime.mark((function e(n){var i;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,t.$api.files.options(t.path,t.file.filename);case 2:i=e.sent,n(i);case 4:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),t.$store.dispatch("breadcrumb",t.$api.files.breadcrumb(t.file,t.$route.name)),t.$store.dispatch("title",t.filename),t.$store.dispatch("content/create",{id:"files/"+n.id,api:t.$api.files.link(t.path,t.filename),content:n.content}),e.next=18;break;case 14:e.prev=14,e.t0=e["catch"](0),window.console.error(e.t0),t.issue=e.t0;case 18:case"end":return e.stop()}}),e,null,[[0,14]])})))()},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:B.api+"/"+this.$api.files.url(this.path,this.file.filename),accept:"."+this.file.extension+","+this.file.mime});break;case"remove":this.$refs.remove.open(this.path,this.file.filename);break}},deleted:function(){this.path?this.$go("/"+this.path):this.$go("/site")},renamed:function(t){this.$go(this.$api.files.link(this.path,t.filename))},uploaded:function(){this.fetch(),this.$store.dispatch("notification/success",":)")}}},wm=_m,xm=Object(y["a"])(wm,km,$m,!1,null,null,null),Om=xm.exports,jm=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()},Sm=[],Cm={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{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("content/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.$go("/")})).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.$go("/login"):t.$api.translations.options().then((function(n){t.languages=n,t.system=e,t.$store.dispatch("title",t.$t("view.installation"))}))}))}}},Em=Cm,Rm=(n("146c"),Object(y["a"])(Em,jm,Sm,!1,null,null,null)),Tm=Rm.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")]):t.ready?n("k-view",{staticClass:"k-login-view",attrs:{align:"center"}},[n("k-login-form")],1):t._e()},Lm=[],Am=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("form",{staticClass:"k-login-form",on:{submit:function(e){return e.preventDefault(),t.login(e)}}},[n("h1",{staticClass:"k-offscreen"},[t._v(t._s(t.$t("login")))]),t.issue?n("div",{staticClass:"k-login-alert",on:{click:function(e){t.issue=null}}},[n("span",[t._v(t._s(t.issue))]),n("k-icon",{attrs:{type:"alert"}})],1):t._e(),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)},Bm=[],qm={data:function(){return{isLoading:!1,issue:"",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;return Object(j["a"])(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return t.issue=null,t.isLoading=!0,e.prev=2,e.next=5,t.$store.dispatch("user/login",t.user);case 5:return e.next=7,t.$store.dispatch("system/load",!0);case 7:t.$store.dispatch("notification/success",t.$t("welcome")),e.next=13;break;case 10:e.prev=10,e.t0=e["catch"](2),t.issue=t.$t("error.access.login");case 13:return e.prev=13,t.isLoading=!1,e.finish(13);case 16:case"end":return e.stop()}}),e,null,[[2,10,13,16]])})))()}}},Nm=qm,Pm=Object(y["a"])(Nm,Am,Bm,!1,null,null,null),Dm=Pm.exports,Mm={components:{"k-login-form":window.panel.plugins.login||Dm},data:function(){return{ready:!1,issue:null}},created:function(){var t=this;this.$store.dispatch("content/current",null),this.$store.dispatch("system/load").then((function(e){e.isReady||t.$go("/installation"),e.user&&e.user.id&&t.$go("/"),t.ready=!0,t.$store.dispatch("title",t.$t("login"))})).catch((function(e){t.issue=e}))}},Fm=Mm,Um=(n("24c1"),Object(y["a"])(Fm,Im,Lm,!1,null,null,null)),zm=Um.exports,Hm=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,tooltip:t.status.label},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)},Km=[],Vm={mixins:[ym],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("content/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")}}},Ym=Vm,Wm=(n("202d"),Object(y["a"])(Ym,Hm,Km,!1,null,null,null)),Jm=Wm.exports,Gm=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)},Zm=[],Xm={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("content/current",null),this.$store.dispatch("title",this.$t("view.settings")),this.$store.dispatch("breadcrumb",[]),this.fetch()},methods:{fetch:function(){var t=this;!0===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"},image:!0,text:n.name,info:n.code,link:function(){t.$refs.update.open(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}}}},Qm=Xm,tg=(n("9bd5"),Object(y["a"])(Qm,Gm,Zm,!1,null,null,null)),eg=tg.exports,ng=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)},ig=[],rg={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.state.content.status.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("content/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}}}},sg=rg,ag=Object(y["a"])(sg,ng,ig,!1,null,null,null),og=ag.exports,ug=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)},lg=[],cg={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("content/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:!0};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.$go("/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.$go("/users"):this.$go("/users/role/"+t.value),this.$refs.roles.close()}}},pg=cg,dg=Object(y["a"])(pg,ug,lg,!1,null,null,null),fg=dg.exports,hg=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()},mg=[],gg={mixins:[ym],props:{id:{type:[Boolean,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 B.api+"/users/"+this.user.id+"/avatar"}},watch:{"$route.name":{handler:function(t){"Account"===t&&this.$store.dispatch("breadcrumb",[])},immediate:!0},language:function(){this.fetch()},id:function(){this.fetch()}},methods:{action:function(t){var e=this;return Object(j["a"])(regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){while(1)switch(n.prev=n.next){case 0:n.t0=t,n.next="email"===n.t0?3:"language"===n.t0?5:"password"===n.t0?7:"picture.delete"===n.t0?9:"remove"===n.t0?14:"rename"===n.t0?16:"role"===n.t0?18:20;break;case 3:return e.$refs.email.open(e.user.id),n.abrupt("break",21);case 5:return e.$refs.language.open(e.user.id),n.abrupt("break",21);case 7:return e.$refs.password.open(e.user.id),n.abrupt("break",21);case 9:return n.next=11,e.$api.users.deleteAvatar(e.id);case 11:return e.avatar=null,e.$store.dispatch("notification/success",":)"),n.abrupt("break",21);case 14:return e.$refs.remove.open(e.user.id),n.abrupt("break",21);case 16:return e.$refs.rename.open(e.user.id),n.abrupt("break",21);case 18:return e.$refs.role.open(e.user.id),n.abrupt("break",21);case 20:e.$store.dispatch("notification/error","Not yet implemented");case 21:case"end":return n.stop()}}),n)})))()},fetch:function(){var t=this;return Object(j["a"])(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:if(t.id){e.next=2;break}return e.abrupt("return");case 2:return e.prev=2,e.next=5,t.$api.users.get(t.id,{view:"panel"});case 5:t.user=e.sent,t.tabs=t.user.blueprint.tabs,t.ready=!0,t.permissions=t.user.options,t.options=function(){var e=Object(j["a"])(regeneratorRuntime.mark((function e(n){var i;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,t.$api.users.options(t.user.id);case 2:i=e.sent,n(i);case 4:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),t.user.avatar?t.avatar=t.user.avatar.url:t.avatar=null,"User"===t.$route.name&&t.$store.dispatch("breadcrumb",t.$api.users.breadcrumb(t.user)),t.$store.dispatch("title",t.user.name||t.user.email),t.$store.dispatch("content/create",{id:"users/"+t.user.id,api:t.$api.users.link(t.user.id),content:t.user.content}),e.next=19;break;case 16:e.prev=16,e.t0=e["catch"](2),t.issue=e.t0;case 19:case"end":return e.stop()}}),e,null,[[2,16]])})))()},uploadedAvatar:function(){this.$store.dispatch("notification/success",":)"),this.fetch()}}},bg=gg,vg=(n("bd96"),Object(y["a"])(bg,hg,mg,!1,null,null,null)),kg=vg.exports;F["a"].component("k-dialog",yt),F["a"].component("k-error-dialog",St),F["a"].component("k-file-rename-dialog",Dt),F["a"].component("k-file-remove-dialog",Lt),F["a"].component("k-files-dialog",Vt),F["a"].component("k-form-dialog",Xt),F["a"].component("k-language-create-dialog",re),F["a"].component("k-language-remove-dialog",ce),F["a"].component("k-language-update-dialog",be),F["a"].component("k-page-create-dialog",we),F["a"].component("k-page-duplicate-dialog",Ee),F["a"].component("k-page-rename-dialog",Fe),F["a"].component("k-page-remove-dialog",Be),F["a"].component("k-page-status-dialog",Ye),F["a"].component("k-page-template-dialog",Qe),F["a"].component("k-page-url-dialog",an),F["a"].component("k-pages-dialog",dn),F["a"].component("k-remove-dialog",vn),F["a"].component("k-site-rename-dialog",_n),F["a"].component("k-text-dialog",Cn),F["a"].component("k-user-create-dialog",An),F["a"].component("k-user-email-dialog",Mn),F["a"].component("k-user-language-dialog",Vn),F["a"].component("k-user-password-dialog",Xn),F["a"].component("k-user-remove-dialog",ri),F["a"].component("k-user-rename-dialog",ci),F["a"].component("k-user-role-dialog",gi),F["a"].component("k-users-dialog",_i),F["a"].component("k-calendar",Ai),F["a"].component("k-counter",Mi),F["a"].component("k-autocomplete",Ci),F["a"].component("k-form",Vi),F["a"].component("k-form-buttons",Qi),F["a"].component("k-form-indicator",sr),F["a"].component("k-field",pr),F["a"].component("k-fieldset",br),F["a"].component("k-input",wr),F["a"].component("k-upload",Er),F["a"].component("k-checkbox-input",qr),F["a"].component("k-checkboxes-input",Ur),F["a"].component("k-date-input",Wr),F["a"].component("k-datetime-input",ts),F["a"].component("k-email-input",ps),F["a"].component("k-multiselect-input",bs),F["a"].component("k-number-input",ws),F["a"].component("k-password-input",Ss),F["a"].component("k-radio-input",Ls),F["a"].component("k-range-input",Ds),F["a"].component("k-select-input",Ks),F["a"].component("k-tags-input",Zs),F["a"].component("k-tel-input",ea),F["a"].component("k-text-input",os),F["a"].component("k-textarea-input",oa),F["a"].component("k-time-input",fa),F["a"].component("k-toggle-input",ka),F["a"].component("k-url-input",wa),F["a"].component("k-checkboxes-field",Ea),F["a"].component("k-date-field",Ba),F["a"].component("k-email-field",Fa),F["a"].component("k-files-field",Wa),F["a"].component("k-gap-field",Qa),F["a"].component("k-headline-field",so),F["a"].component("k-info-field",po),F["a"].component("k-line-field",bo),F["a"].component("k-multiselect-field",wo),F["a"].component("k-number-field",Eo),F["a"].component("k-pages-field",Bo),F["a"].component("k-password-field",Fo),F["a"].component("k-radio-field",Yo),F["a"].component("k-range-field",Qo),F["a"].component("k-select-field",su),F["a"].component("k-structure-field",pu),F["a"].component("k-tags-field",bu),F["a"].component("k-text-field",Eu),F["a"].component("k-textarea-field",Bu),F["a"].component("k-tel-field",wu),F["a"].component("k-time-field",Fu),F["a"].component("k-toggle-field",Yu),F["a"].component("k-url-field",Qu),F["a"].component("k-users-field",sl),F["a"].component("k-toolbar",dl),F["a"].component("k-toolbar-email-dialog",vl),F["a"].component("k-toolbar-link-dialog",xl),F["a"].component("k-email-field-preview",Vl),F["a"].component("k-files-field-preview",ql),F["a"].component("k-pages-field-preview",Xl),F["a"].component("k-toggle-field-preview",rc),F["a"].component("k-url-field-preview",Ul),F["a"].component("k-users-field-preview",cc),F["a"].component("k-bar",mc),F["a"].component("k-box",yc),F["a"].component("k-card",Sc),F["a"].component("k-cards",Lc),F["a"].component("k-collection",Dc),F["a"].component("k-column",Kc),F["a"].component("k-dropzone",Zc),F["a"].component("k-empty",ip),F["a"].component("k-file-preview",lp),F["a"].component("k-grid",mp),F["a"].component("k-header",yp),F["a"].component("k-list",Sp),F["a"].component("k-list-item",Lp),F["a"].component("k-tabs",Dp),F["a"].component("k-view",Kp),F["a"].component("k-draggable",Qp),F["a"].component("k-error-boundary",id),F["a"].component("k-headline",ld),F["a"].component("k-icon",md),F["a"].component("k-image",yd),F["a"].component("k-progress",Sd),F["a"].component("k-sort-handle",Id),F["a"].component("k-text",Pd),F["a"].component("k-button",Hd),F["a"].component("k-button-disabled",Gd),F["a"].component("k-button-group",ef),F["a"].component("k-button-link",uf),F["a"].component("k-button-native",mf),F["a"].component("k-dropdown",$f),F["a"].component("k-dropdown-content",Sf),F["a"].component("k-dropdown-item",Lf),F["a"].component("k-languages-dropdown",Kf),F["a"].component("k-link",Df),F["a"].component("k-pagination",Zf),F["a"].component("k-prev-next",ih),F["a"].component("k-search",lh),F["a"].component("k-tag",mh),F["a"].component("k-topbar",_h),F["a"].component("k-sections",Ch),F["a"].component("k-info-section",Bh),F["a"].component("k-pages-section",Uh),F["a"].component("k-files-section",Wh),F["a"].component("k-fields-section",tm),F["a"].component("k-browser-view",om),F["a"].component("k-custom-view",fm),F["a"].component("k-error-view",vm),F["a"].component("k-file-view",Om),F["a"].component("k-installation-view",Tm),F["a"].component("k-login-view",zm),F["a"].component("k-page-view",Jm),F["a"].component("k-settings-view",eg),F["a"].component("k-site-view",og),F["a"].component("k-users-view",fg),F["a"].component("k-user-view",kg);var $g=n("2f62"),yg=n("3835"),_g=function(t,e){localStorage.setItem("kirby$content$"+t,JSON.stringify(e))},wg={namespaced:!0,state:{current:null,models:{},status:{enabled:!0,lock:null,unlock:null}},getters:{exists:function(t){return function(e){return t.models.hasOwnProperty(e)}},hasChanges:function(t,e){return function(t){var n=e.model(t).changes;return Object.keys(n).length>0}},isCurrent:function(t){return function(e){return t.current===e}},id:function(t,e,n){return function(e){return e=e||t.current,n.languages.current?e+"/"+n.languages.current.code:e}},model:function(t,e){return function(n){return n=n||t.current,!0===e.exists(n)?t.models[n]:{api:null,originals:{},values:{},changes:{}}}},originals:function(t,e){return function(t){return it(e.model(t).originals)}},values:function(t,e){return function(t){return Object(I["a"])(Object(I["a"])({},e.originals(t)),e.changes(t))}},changes:function(t,e){return function(t){return it(e.model(t).changes)}}},mutations:{CREATE:function(t,e){var n=Object(yg["a"])(e,2),i=n[0],r=n[1];if(!r)return!1;var s=t.models[i]?t.models[i].changes:r.changes;F["a"].set(t.models,i,{api:r.api,originals:r.originals,changes:s||{}})},CURRENT:function(t,e){t.current=e},LOCK:function(t,e){F["a"].set(t.status,"lock",e)},MOVE:function(t,e){var n=Object(yg["a"])(e,2),i=n[0],r=n[1],s=it(t.models[i]);F["a"].delete(t.models,i),F["a"].set(t.models,r,s);var a=localStorage.getItem("kirby$content$"+i);localStorage.removeItem("kirby$content$"+i),localStorage.setItem("kirby$content$"+r,a)},REMOVE:function(t,e){F["a"].delete(t.models,e),localStorage.removeItem("kirby$content$"+e)},REVERT:function(t,e){t.models[e]&&(F["a"].set(t.models[e],"changes",{}),localStorage.removeItem("kirby$content$"+e))},STATUS:function(t,e){F["a"].set(t.status,"enabled",e)},UNLOCK:function(t,e){e&&F["a"].set(t.models[t.current],"changes",{}),F["a"].set(t.status,"unlock",e)},UPDATE:function(t,e){var n=Object(yg["a"])(e,3),i=n[0],r=n[1],s=n[2];if(!t.models[i])return!1;s=it(s);var a=JSON.stringify(s),o=JSON.stringify(t.models[i].originals[r]);o===a?F["a"].delete(t.models[i].changes,r):F["a"].set(t.models[i].changes,r,s),_g(i,{api:t.models[i].api,originals:t.models[i].originals,changes:t.models[i].changes})}},actions:{init:function(t){Object.keys(localStorage).filter((function(t){return t.startsWith("kirby$content$")})).map((function(t){return t.split("kirby$content$")[1]})).forEach((function(e){var n=localStorage.getItem("kirby$content$"+e);t.commit("CREATE",[e,JSON.parse(n)])})),Object.keys(localStorage).filter((function(t){return t.startsWith("kirby$form$")})).map((function(t){return t.split("kirby$form$")[1]})).forEach((function(e){var n=localStorage.getItem("kirby$form$"+e),i=null;try{i=JSON.parse(n)}catch(s){}if(!i||!i.api)return localStorage.removeItem("kirby$form$"+e),!1;var r={api:i.api,originals:i.originals,changes:i.values};t.commit("CREATE",[e,r]),_g(e,r),localStorage.removeItem("kirby$form$"+e)}))},create:function(t,e){e.id=t.getters.id(e.id),(e.id.startsWith("pages/")||e.id.startsWith("site"))&&delete e.content.title;var n={api:e.api,originals:it(e.content),changes:{}};F["a"].$api.get(e.api+"/unlock").then((function(n){!0===n.supported&&!0===n.unlocked&&t.commit("UNLOCK",t.state.models[e.id].changes)})).catch((function(){})),t.commit("CREATE",[e.id,n]),t.dispatch("current",e.id)},current:function(t,e){t.commit("CURRENT",e)},disable:function(t){t.commit("STATUS",!1)},enable:function(t){t.commit("STATUS",!0)},lock:function(t,e){t.commit("LOCK",e)},move:function(t,e){var n=Object(yg["a"])(e,2),i=n[0],r=n[1];i=t.getters.id(i),r=t.getters.id(r),t.commit("MOVE",[i,r])},remove:function(t,e){t.commit("REMOVE",e),t.getters.isCurrent(e)&&t.commit("CURRENT",null)},revert:function(t,e){e=e||t.state.current,t.commit("REVERT",e)},save:function(t,e){if(e=e||t.state.current,t.getters.isCurrent(e)&&!1===t.state.status.enabled)return!1;t.dispatch("disable");var n=t.getters.model(e),i=Object(I["a"])(Object(I["a"])({},n.originals),n.changes);return F["a"].$api.patch(n.api,i).then((function(){t.commit("CREATE",[e,Object(I["a"])(Object(I["a"])({},n),{},{originals:i})]),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(yg["a"])(e,3),i=n[0],r=n[1],s=n[2];s=s||t.state.current,t.commit("UPDATE",[s,i,r])}}},xg={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&&F["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))}}},Og={namespaced:!0,state:{all:[],current:null,default:null},mutations:{SET_ALL:function(t,e){t.all=e.map((function(t){return{code:t.code,default:t.default,direction:t.direction,locale:t.locale,name:t.name,rules:t.rules,url:t.url}}))},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 r=e.filter((function(t){return t.code===i}))[0];if(r)return void t.dispatch("current",r)}t.dispatch("current",n||e[0]||null)},load:function(t){return Object(j["a"])(regeneratorRuntime.mark((function e(){var n;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,F["a"].$api.languages.list();case 2:n=e.sent,t.dispatch("install",n.data);case 4:case"end":return e.stop()}}),e)})))()}}},jg={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(I["a"])({type:"success",timeout:4e3},e))},error:function(t,e){"string"===typeof e&&(e={message:e}),t.dispatch("open",Object(I["a"])({type:"error"},e))}}},Sg={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:{load:function(t,e){return Object(j["a"])(regeneratorRuntime.mark((function n(){var i;return regeneratorRuntime.wrap((function(n){while(1)switch(n.prev=n.next){case 0:if(e||!t.state.info.isReady||!t.rootState.user.current){n.next=2;break}return n.abrupt("return",new Promise((function(e){e(t.state.info)})));case 2:return n.prev=2,n.next=5,F["a"].$api.system.get();case 5:return i=n.sent,t.commit("SET_INFO",Object(I["a"])({isReady:i.isInstalled&&i.isOk},i)),i.languages&&t.dispatch("languages/install",i.languages,{root:!0}),t.dispatch("translation/install",i.translation,{root:!0}),t.dispatch("translation/activate",i.translation.id,{root:!0}),i.user&&t.dispatch("user/current",i.user,{root:!0}),n.abrupt("return",t.state.info);case 14:n.prev=14,n.t0=n["catch"](2),t.commit("SET_INFO",{isBroken:!0,error:n.t0.message});case 17:case"end":return n.stop()}}),n,null,[[2,14]])})))()},register:function(t,e){t.commit("SET_LICENSE",e)},title:function(t,e){t.commit("SET_TITLE",e)}}},Cg={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 F["a"].$api.translations.get(e)},install:function(t,e){t.commit("INSTALL",e),F["a"].i18n.add(e.id,e.data)},activate:function(t,e){return Object(j["a"])(regeneratorRuntime.mark((function n(){var i,r;return regeneratorRuntime.wrap((function(n){while(1)switch(n.prev=n.next){case 0:if(i=t.state.installed[e],i){n.next=8;break}return n.next=4,t.dispatch("load",e);case 4:return r=n.sent,t.dispatch("install",r),t.dispatch("activate",e),n.abrupt("return");case 8:F["a"].i18n.set(e),t.commit("SET_CURRENT",e),document.dir=i.direction,document.documentElement.lang=e;case 12:case"end":return n.stop()}}),n)})))()}}},Eg=n("8c4f"),Rg=function(t,e,n){Bg.dispatch("system/load").then((function(){var e=Bg.state.user.current;if(!e)return Bg.dispatch("user/visit",t.path),Bg.dispatch("user/logout"),!1;var i=e.permissions.access;return!1===i.panel?(window.location.href=B.site,!1):!1===i[t.meta.view]?(Bg.dispatch("notification/error",{message:F["a"].i18n.translate("error.access.view")}),n(!1===i.site?"/account":"/")):void n()}))},Tg=[{path:"/",name:"Home",redirect:"/site"},{path:"/browser",name:"Browser",component:F["a"].component("k-browser-view"),meta:{outside:!0}},{path:"/login",component:F["a"].component("k-login-view"),meta:{outside:!0}},{path:"/logout",beforeEnter:function(){Object.keys(localStorage).forEach((function(t){t.startsWith("kirby$content$")&&localStorage.removeItem(t)})),Bg.dispatch("user/logout")},meta:{outside:!0}},{path:"/installation",component:F["a"].component("k-installation-view"),meta:{outside:!0}},{path:"/site",name:"Site",meta:{view:"site"},component:F["a"].component("k-site-view"),beforeEnter:Rg},{path:"/site/files/:filename",name:"SiteFile",meta:{view:"site"},component:F["a"].component("k-file-view"),beforeEnter:Rg,props:function(t){return{path:"site",filename:t.params.filename}}},{path:"/pages/:path/files/:filename",name:"PageFile",meta:{view:"site"},component:F["a"].component("k-file-view"),beforeEnter:Rg,props:function(t){return{path:"pages/"+t.params.path,filename:t.params.filename}}},{path:"/users/:path/files/:filename",name:"UserFile",meta:{view:"users"},component:F["a"].component("k-file-view"),beforeEnter:Rg,props:function(t){return{path:"users/"+t.params.path,filename:t.params.filename}}},{path:"/pages/:path",name:"Page",meta:{view:"site"},component:F["a"].component("k-page-view"),beforeEnter:Rg,props:function(t){return{path:t.params.path}}},{path:"/settings",name:"Settings",meta:{view:"settings"},component:F["a"].component("k-settings-view"),beforeEnter:Rg},{path:"/users/role/:role",name:"UsersByRole",meta:{view:"users"},component:F["a"].component("k-users-view"),beforeEnter:Rg,props:function(t){return{role:t.params.role}}},{path:"/users",name:"Users",meta:{view:"users"},beforeEnter:Rg,component:F["a"].component("k-users-view")},{path:"/users/:id",name:"User",meta:{view:"users"},component:F["a"].component("k-user-view"),beforeEnter:Rg,props:function(t){return{id:t.params.id}}},{path:"/account",name:"Account",meta:{view:"account"},component:F["a"].component("k-user-view"),beforeEnter:Rg,props:function(){return{id:!!Bg.state.user.current&&Bg.state.user.current.id}}},{path:"/plugins/:id",name:"Plugin",meta:{view:"plugin"},props:function(t){return{plugin:t.params.id}},beforeEnter:Rg,component:F["a"].component("k-custom-view")},{path:"*",name:"NotFound",beforeEnter:function(t,e,n){n("/")}}];F["a"].use(Eg["a"]);var Ig=new Eg["a"]({mode:"history",routes:Tg,url:"/"===B.url?"":B.url});Ig.beforeEach((function(t,e,n){"Browser"!==t.name&&!1===im.all()&&n("/browser"),t.meta.outside||Bg.dispatch("user/visit",t.path),Bg.dispatch("view",t.meta.view),Bg.dispatch("content/lock",null),Bg.dispatch("content/unlock",null),Bg.dispatch("heartbeat/clear"),n()}));var Lg=Ig,Ag={namespaced:!0,state:{current:null,path:null},mutations:{SET_CURRENT:function(t,e){t.current=e,e&&e.permissions?(F["a"].prototype.$user=e,F["a"].prototype.$permissions=e.permissions):(F["a"].prototype.$user=null,F["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(I["a"])(Object(I["a"])({},t.state.current),{},{email:e}))},language:function(t,e){t.dispatch("translation/activate",e,{root:!0}),t.commit("SET_CURRENT",Object(I["a"])(Object(I["a"])({},t.state.current),{},{language:e}))},load:function(t){return Object(j["a"])(regeneratorRuntime.mark((function e(){var n;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,F["a"].$api.auth.user();case 2:return n=e.sent,t.commit("SET_CURRENT",n),e.abrupt("return",n);case 5:case"end":return e.stop()}}),e)})))()},login:function(t,e){return Object(j["a"])(regeneratorRuntime.mark((function n(){var i;return regeneratorRuntime.wrap((function(n){while(1)switch(n.prev=n.next){case 0:return n.next=2,F["a"].$api.auth.login(e);case 2:return i=n.sent,t.commit("SET_CURRENT",i),t.dispatch("translation/activate",i.language,{root:!0}),Lg.push(t.state.path||"/"),n.abrupt("return",i);case 7:case"end":return n.stop()}}),n)})))()},logout:function(t,e){return Object(j["a"])(regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){while(1)switch(n.prev=n.next){case 0:if(t.commit("SET_CURRENT",null),!e){n.next=4;break}return window.location.href=(window.panel.url||"")+"/login",n.abrupt("return");case 4:return n.prev=4,n.next=7,F["a"].$api.auth.logout();case 7:return n.prev=7,Lg.push("/login"),n.finish(7);case 10:case"end":return n.stop()}}),n,null,[[4,,7,10]])})))()},name:function(t,e){t.commit("SET_CURRENT",Object(I["a"])(Object(I["a"])({},t.state.current),{},{name:e}))},visit:function(t,e){t.commit("SET_PATH",e)}}};F["a"].use($g["a"]);var Bg=new $g["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){var n;n=t.state.user.current?F["a"].$api.site.get(["title"]):new Promise((function(e){e(t.state.system.info)})),n.then((function(n){t.commit("SET_TITLE",e),t.dispatch("system/title",n.title),document.title=e||"",document.title+=null!==e?" | "+n.title:n.title}))},view:function(t,e){t.commit("SET_VIEW",e)}},modules:{content:wg,heartbeat:xg,languages:Og,notification:jg,system:Sg,translation:Cg,user:Ag}});F["a"].config.errorHandler=function(t){B.debug&&window.console.error(t),Bg.dispatch("notification/error",{message:t.message||"An error occurred. Please reload the Panel."})},window.panel=window.panel||{},window.panel.error=function(t,e){B.debug&&window.console.error(t+": "+e),Bg.dispatch("error",t+". See the console for more information.")};var qg=n("f2f3");F["a"].use(qg["a"].plugin,Bg);var Ng=n("19e9"),Pg=n.n(Ng),Dg=n("5a0c"),Mg=n.n(Dg),Fg=n("f906"),Ug=n.n(Fg);Mg.a.extend(Ug.a),F["a"].prototype.$library={autosize:Pg.a,dayjs:Mg.a};n("4fad");var zg={};for(var Hg in F["a"].options.components)zg[Hg]=F["a"].options.components[Hg];var Kg=function(t,e){e.template||e.render||e.extends?(e.extends&&"string"===typeof e.extends&&(e.extends=zg[e.extends],e.template&&(e.render=null)),e.mixins&&(e.mixins=e.mixins.map((function(t){return"string"===typeof t?zg[t]:t}))),zg[t]&&window.console.warn('Plugin is replacing "'.concat(t,'"')),F["a"].component(t,e)):Bg.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.'))};Object.entries(window.panel.plugins.components).forEach((function(t){var e=Object(yg["a"])(t,2),n=e[0],i=e[1];Kg(n,i)})),Object.entries(window.panel.plugins.fields).forEach((function(t){var e=Object(yg["a"])(t,2),n=e[0],i=e[1];Kg(n,i)})),Object.entries(window.panel.plugins.sections).forEach((function(t){var e=Object(yg["a"])(t,2),n=e[0],i=e[1];Kg(n,Object(I["a"])(Object(I["a"])({},i),{},{mixins:[Th].concat(i.mixins||[])}))})),Object.entries(window.panel.plugins.views).forEach((function(t){var e=Object(yg["a"])(t,2),n=e[0],i=e[1];if(!i.component)return Bg.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},F["a"].component("k-"+n+"-plugin-view",i.component)})),window.panel.plugins.use.forEach((function(t){F["a"].use(t)})),F["a"].config.productionTip=!1,F["a"].config.devtools=!0,F["a"].use(ft),F["a"].use(tt),F["a"].use(Q),F["a"].use(nt.a),F["a"].use(X,Bg),F["a"].prototype.$go=function(t){Lg.push(t).catch((function(t){if(t&&t.name&&"NavigationDuplicated"===t.name)return!0;throw t}))},new F["a"]({router:Lg,store:Bg,created:function(){var t=this;window.panel.app=this,window.panel.plugins.created.forEach((function(e){e(t)})),this.$store.dispatch("content/init")},render:function(t){return t(D)}}).$mount("#app")},"56d9":function(t,e,n){},"56ee":function(t,e,n){},"580a":function(t,e,n){"use strict";var i=n("df34"),r=n.n(i);r.a},5933:function(t,e,n){},"5aee":function(t,e,n){"use strict";var i=n("3523"),r=n.n(i);r.a},"5b23":function(t,e,n){"use strict";var i=n("b055"),r=n.n(i);r.a},"5c0b":function(t,e,n){"use strict";var i=n("64b0"),r=n.n(i);r.a},"5c8f":function(t,e,n){},"5d33":function(t,e,n){"use strict";var i=n("5e4b"),r=n.n(i);r.a},"5e4b":function(t,e,n){},6018:function(t,e,n){"use strict";var i=n("517f"),r=n.n(i);r.a},6233:function(t,e,n){},"64b0":function(t,e,n){},"64e4":function(t,e,n){"use strict";var i=n("d735"),r=n.n(i);r.a},6695:function(t,e,n){},"696b":function(t,e,n){"use strict";var i=n("af28"),r=n.n(i);r.a},"6a18":function(t,e,n){"use strict";var i=n("8e2b"),r=n.n(i);r.a},"6ab3":function(t,e,n){"use strict";var i=n("1aa8"),r=n.n(i);r.a},"6bcd":function(t,e,n){"use strict";var i=n("f99d"),r=n.n(i);r.a},"6f7b":function(t,e,n){"use strict";var i=n("7435"),r=n.n(i);r.a},"6fff":function(t,e,n){},"718c":function(t,e,n){"use strict";var i=n("ea6b"),r=n.n(i);r.a},"73f5":function(t,e,n){},7435:function(t,e,n){},7568:function(t,e,n){"use strict";var i=n("6695"),r=n.n(i);r.a},"756d":function(t,e,n){},7737:function(t,e,n){"use strict";var i=n("c366"),r=n.n(i);r.a},"7a7d":function(t,e,n){"use strict";var i=n("cbef"),r=n.n(i);r.a},"7d5d":function(t,e,n){"use strict";var i=n("3afb"),r=n.n(i);r.a},"7dc7":function(t,e,n){"use strict";var i=n("fa59"),r=n.n(i);r.a},"7e85":function(t,e,n){"use strict";var i=n("a925"),r=n.n(i);r.a},"7f6e":function(t,e,n){"use strict";var i=n("0f7a"),r=n.n(i);r.a},8370:function(t,e,n){},"862b":function(t,e,n){"use strict";var i=n("db66"),r=n.n(i);r.a},"863d":function(t,e,n){},"893d":function(t,e,n){"use strict";var i=n("56ee"),r=n.n(i);r.a},"8b71":function(t,e,n){},"8c28":function(t,e,n){"use strict";var i=n("6fff"),r=n.n(i);r.a},"8e2b":function(t,e,n){},9143:function(t,e,n){},"977f":function(t,e,n){"use strict";var i=n("c19c"),r=n.n(i);r.a},9799:function(t,e,n){"use strict";var i=n("f0c3"),r=n.n(i);r.a},"98a1":function(t,e,n){"use strict";var i=n("4c4a"),r=n.n(i);r.a},"9b86":function(t,e,n){},"9bd5":function(t,e,n){"use strict";var i=n("6233"),r=n.n(i);r.a},"9c45":function(t,e,n){},"9c80":function(t,e,n){},"9cce":function(t,e,n){},"9e1f":function(t,e,n){},"9e26":function(t,e,n){"use strict";var i=n("a101"),r=n.n(i);r.a},a101:function(t,e,n){},a134:function(t,e,n){"use strict";var i=n("bed0"),r=n.n(i);r.a},a14d:function(t,e,n){},a17f:function(t,e,n){},a567:function(t,e,n){"use strict";var i=n("34ba"),r=n.n(i);r.a},a5f3:function(t,e,n){"use strict";var i=n("f1ff"),r=n.n(i);r.a},a66d:function(t,e,n){"use strict";var i=n("2dc9"),r=n.n(i);r.a},a803:function(t,e,n){},a925:function(t,e,n){},abde:function(t,e,n){},ac27:function(t,e,n){"use strict";var i=n("f1ce"),r=n.n(i);r.a},af28:function(t,e,n){},b055:function(t,e,n){},b0af:function(t,e,n){},b0d6:function(t,e,n){"use strict";var i=n("3341"),r=n.n(i);r.a},b5d2:function(t,e,n){"use strict";var i=n("0656"),r=n.n(i);r.a},b746:function(t,e,n){"use strict";var i=n("5933"),r=n.n(i);r.a},b822:function(t,e,n){},b9d6:function(t,e,n){},ba8f:function(t,e,n){"use strict";var i=n("c235"),r=n.n(i);r.a},bb41:function(t,e,n){"use strict";var i=n("de06"),r=n.n(i);r.a},bbcc:function(t,e,n){},bd96:function(t,e,n){"use strict";var i=n("b0af"),r=n.n(i);r.a},bed0:function(t,e,n){},bf53:function(t,e,n){"use strict";var i=n("eb2d"),r=n.n(i);r.a},c119:function(t,e,n){"use strict";var i=n("315e"),r=n.n(i);r.a},c19c:function(t,e,n){},c235:function(t,e,n){},c366:function(t,e,n){},c429:function(t,e,n){},c4fb:function(t,e,n){},c7c8:function(t,e,n){"use strict";var i=n("abde"),r=n.n(i);r.a},c857:function(t,e,n){"use strict";var i=n("c4fb"),r=n.n(i);r.a},c9cb:function(t,e,n){"use strict";var i=n("bbcc"),r=n.n(i);r.a},cb8f:function(t,e,n){"use strict";var i=n("9b86"),r=n.n(i);r.a},cbef:function(t,e,n){},cc79:function(t,e,n){"use strict";var i=n("a14d"),r=n.n(i);r.a},cca8:function(t,e,n){"use strict";var i=n("15da"),r=n.n(i);r.a},d07b:function(t,e,n){},d0c1:function(t,e,n){"use strict";var i=n("56d9"),r=n.n(i);r.a},d221:function(t,e,n){"use strict";var i=n("8b71"),r=n.n(i);r.a},d2d1:function(t,e,n){},d343:function(t,e,n){},d34c:function(t,e,n){},d559:function(t,e,n){},d6fc:function(t,e,n){"use strict";var i=n("5c8f"),r=n.n(i);r.a},d735:function(t,e,n){},daa8:function(t,e,n){"use strict";var i=n("337f"),r=n.n(i);r.a},db66:function(t,e,n){},ddfd:function(t,e,n){"use strict";var i=n("b822"),r=n.n(i);r.a},de06:function(t,e,n){},df0d:function(t,e,n){"use strict";var i=n("9c80"),r=n.n(i);r.a},df34:function(t,e,n){},df71:function(t,e,n){},ea2e:function(t,e,n){},ea6b:function(t,e,n){},eb2d:function(t,e,n){},ee15:function(t,e,n){"use strict";var i=n("53cc"),r=n.n(i);r.a},f0c3:function(t,e,n){},f1ce:function(t,e,n){},f1ff:function(t,e,n){},f2c9:function(t,e,n){},f355:function(t,e,n){},f56d:function(t,e,n){"use strict";var i=n("9143"),r=n.n(i);r.a},f8a7:function(t,e,n){"use strict";var i=n("f2c9"),r=n.n(i);r.a},f95f:function(t,e,n){"use strict";var i=n("a803"),r=n.n(i);r.a},f99d:function(t,e,n){},fa59:function(t,e,n){},fa6a:function(t,e,n){"use strict";var i=n("ea2e"),r=n.n(i);r.a},fb36:function(t,e,n){},fc0f:function(t,e,n){"use strict";var i=n("c429"),r=n.n(i);r.a}}); \ No newline at end of file +(function(t){function e(e){for(var i,r,o=e[0],l=e[1],c=e[2],d=0,p=[];d{this.$events.$emit(t)})),!1!==Object.prototype.hasOwnProperty.call(t,"emit")&&!1===t.emit||this.$emit("success")}}},f={mixins:[m],data(){return{registration:{license:null,email:null}}},computed:{fields(){return{license:{label:this.$t("license.register.label"),type:"text",required:!0,counter:!1,placeholder:"K3-",help:this.$t("license.register.help")},email:{label:this.$t("email"),type:"email",required:!0,counter:!1}}}},methods:{async submit(){try{await this.$api.system.register(this.registration),this.$store.dispatch("system/register",this.registration.license),this.success({message:this.$t("license.register.success")})}catch(t){this.$refs.dialog.error(t.message)}}}},g=f,k=Object(c["a"])(g,p,h,!1,null,null,null),b=k.exports;const v=window.panel||{},$={assets:"@/assets",api:"/api",site:Object({NODE_ENV:"production",BASE_URL:"/"}).VUE_APP_DEV_SERVER,url:"/",debug:!0,translation:"en",search:{limit:10}};var y,_,w,x,O={...$,...v},C=t=>{const e=async({endpoint:e,query:s,limit:i,fields:n,map:a})=>{const r=await t.$api.get(e,{q:s,limit:i||10,select:["id",...n,"panelIcon","panelImage"]});return r.data.map(t=>({id:t.id,icon:{...t.panelIcon,back:"black",color:"#fff"},image:{...t.panelImage,back:"pattern",cover:!0},...a(t)}))};return{pages:{label:t.$t("pages"),icon:"page",search:async s=>e({...s,endpoint:"site/search",fields:["title"],map:e=>({title:e.title,link:t.$api.pages.link(e.id),info:e.id})})},files:{label:t.$t("files"),icon:"image",search:async s=>e({...s,endpoint:"files/search",fields:["filename","parent"],map:e=>({title:e.filename,link:t.$api.files.link(t.$api.pages.url(e.parent.id),e.filename),info:e.id})})},users:{label:t.$t("users"),icon:"users",search:async s=>e({...s,endpoint:"users/search",fields:["name","email"],map:e=>({title:e.name||e.email,link:t.$api.users.link(e.id),info:e.email,icon:{back:"black",type:"user"}})})}}},S={name:"App",components:{"k-icons":d,"k-registration":b},data(){return{offline:!1,dragging:!1,debug:O.debug}},computed:{inside(){return!(this.$route.meta.outside||!this.$store.state.user.current)},defaultTranslation(){return!!this.$store.state.languages.current&&this.$store.state.languages.current===this.$store.state.languages.default},fatal(){return this.$store.state.fatal},searchType(){return"users"===this.$store.state.view?"users":"pages"},searchTypes(){return C(this)},translation(){return!!this.$store.state.languages.current&&this.$store.state.languages.current.code}},watch:{fatal(t){null!==t&&this.$nextTick(()=>{let e=this.$refs.fatal.contentWindow.document;e.open(),e.write(t),e.close()})}},created(){this.$events.$on("offline",this.isOffline),this.$events.$on("online",this.isOnline),this.$events.$on("keydown.cmd.shift.f",this.search),this.$events.$on("drop",this.drop)},destroyed(){this.$events.$off("offline",this.isOffline),this.$events.$off("online",this.isOnline),this.$events.$off("keydown.cmd.shift.f",this.search),this.$events.$off("drop",this.drop)},methods:{drop(){this.$store.dispatch("drag",null)},isOnline(){this.offline=!1},isOffline(){!1===this.$store.state.system.info.isLocal&&(this.offline=!0)}}},E=S,j=(s("5c0b"),Object(c["a"])(E,i,n,!1,null,null,null)),T=j.exports,L=t=>({async login(e){const s={long:e.remember||!1,email:e.email,password:e.password};return await t.post("auth/login",s)},async logout(){return t.post("auth/logout")},async user(e){return t.get("auth",e)},async verifyCode(e){return await t.post("auth/code",{code:e})}}),I=(s("5319"),s("a026")),A=t=>({breadcrumb(e,s){let i=null,n=[];switch(s){case"UserFile":n.push({label:e.parent.username,link:t.users.link(e.parent.id)}),i="users/"+e.parent.id;break;case"SiteFile":i="site";break;case"PageFile":n=e.parents.map(e=>({label:e.title,link:t.pages.link(e.id)})),i=t.pages.url(e.parent.id);break}return n.push({label:e.filename,link:this.link(i,e.filename)}),n},async changeName(e,s,i){return t.patch(e+"/files/"+s+"/name",{name:i})},async delete(e,s){return t.delete(e+"/files/"+s)},async get(e,s,i){let n=await t.get(e+"/files/"+s,i);return!0===Array.isArray(n.content)&&(n.content={}),n},link(t,e,s){return"/"+this.url(t,e,s)},async options(e,s,i,n=!0){const a=await t.get(this.url(e,s),{select:"options"}),r=a.options;let o=[];return"list"===i&&(o.push({click:"download",icon:"open",text:I["a"].i18n.translate("open")}),o.push("-")),o.push({click:"rename",icon:"title",text:I["a"].i18n.translate("rename"),disabled:!r.changeName}),o.push({click:"replace",icon:"upload",text:I["a"].i18n.translate("replace"),disabled:!r.replace}),"list"===i&&(o.push("-"),o.push({click:"sort",icon:"sort",text:I["a"].i18n.translate("file.sort"),disabled:!(r.update&&n)})),o.push("-"),o.push({click:"remove",icon:"trash",text:I["a"].i18n.translate("delete"),disabled:!r.delete}),o},async update(e,s,i){return t.patch(e+"/files/"+s,i)},url(t,e,s){let i=t+"/files/"+e;return s&&(i+="/"+s),i}}),B=t=>({async create(e){return await t.post("languages",e)},async delete(e){return t.delete("languages/"+e)},async get(e){return await t.get("languages/"+e)},async list(){return await t.get("languages")},async update(e,s){return t.patch("languages/"+e,s)}}),D=t=>({async blueprint(e){return t.get("pages/"+this.id(e)+"/blueprint")},async blueprints(e,s){return t.get("pages/"+this.id(e)+"/blueprints",{section:s})},breadcrumb(t,e=!0){var s=t.parents.map(t=>({label:t.title,link:this.link(t.id)}));return!0===e&&s.push({label:t.title,link:this.link(t.id)}),s},async changeSlug(e,s){return t.patch("pages/"+this.id(e)+"/slug",{slug:s})},async changeStatus(e,s,i){return t.patch("pages/"+this.id(e)+"/status",{status:s,position:i})},async changeTemplate(e,s){return t.patch("pages/"+this.id(e)+"/template",{template:s})},async changeTitle(e,s){return t.patch("pages/"+this.id(e)+"/title",{title:s})},async children(e,s){return t.post("pages/"+this.id(e)+"/children/search",s)},async create(e,s){return null===e||"/"===e?t.post("site/children",s):t.post("pages/"+this.id(e)+"/children",s)},async delete(e,s){return t.delete("pages/"+this.id(e),s)},async duplicate(e,s,i){return t.post("pages/"+this.id(e)+"/duplicate",{slug:s,children:i.children||!1,files:i.files||!1})},async get(e,s){let i=await t.get("pages/"+this.id(e),s);return!0===Array.isArray(i.content)&&(i.content={}),i},id(t){return t.replace(/\//g,"+")},async files(e,s){return t.post("pages/"+this.id(e)+"/files/search",s)},link(t){return"/"+this.url(t)},async options(e,s="view",i=!0){const n=await t.get(this.url(e),{select:"options"}),a=n.options;let r=[];return"list"===s&&(r.push({click:"preview",icon:"open",text:I["a"].i18n.translate("open"),disabled:!1===a.preview}),r.push("-")),r.push({click:"rename",icon:"title",text:I["a"].i18n.translate("rename"),disabled:!a.changeTitle}),r.push({click:"duplicate",icon:"copy",text:I["a"].i18n.translate("duplicate"),disabled:!a.duplicate}),r.push("-"),r.push({click:"url",icon:"url",text:I["a"].i18n.translate("page.changeSlug"),disabled:!a.changeSlug}),r.push({click:"status",icon:"preview",text:I["a"].i18n.translate("page.changeStatus"),disabled:!a.changeStatus}),"list"===s&&r.push({click:"sort",icon:"sort",text:I["a"].i18n.translate("page.sort"),disabled:!(a.sort&&i)}),r.push({click:"template",icon:"template",text:I["a"].i18n.translate("page.changeTemplate"),disabled:!a.changeTemplate}),r.push("-"),r.push({click:"remove",icon:"trash",text:I["a"].i18n.translate("delete"),disabled:!a.delete}),r},async preview(t){const e=await this.get(this.id(t),{select:"previewUrl"});return e.previewUrl},async search(e,s){return e?t.post("pages/"+this.id(e)+"/children/search?select=id,title,hasChildren",s):t.post("site/children/search?select=id,title,hasChildren",s)},async update(e,s){return t.patch("pages/"+this.id(e),s)},url(t,e){let s=null===t?"pages":"pages/"+t.replace(/\//g,"+");return e&&(s+="/"+e),s}}),M=t=>({running:0,async request(e,s,i=!1){s=Object.assign(s||{},{credentials:"same-origin",cache:"no-store",headers:{"x-requested-with":"xmlhttprequest","content-type":"application/json",...s.headers}}),t.methodOverwrite&&"GET"!==s.method&&"POST"!==s.method&&(s.headers["x-http-method-override"]=s.method,s.method="POST"),s=t.onPrepare(s);const n=e+"/"+JSON.stringify(s);t.onStart(n,i),this.running++;const a=await fetch([t.endpoint,e].join(t.endpoint.endsWith("/")||e.startsWith("/")?"":"/"),s),r=await a.text();try{let e;try{e=JSON.parse(r)}catch(o){return void t.onParserError(r)}if(a.status<200||a.status>299)throw e;if(e.status&&"error"===e.status)throw e;let s=e;return e.data&&e.type&&"model"===e.type&&(s=e.data),this.running--,t.onComplete(n),t.onSuccess(e),s}catch(o){throw this.running--,t.onComplete(n),t.onError(o),o}},async get(t,e,s,i=!1){return e&&(t+="?"+Object.keys(e).filter(t=>void 0!==e[t]&&null!==e[t]).map(t=>t+"="+e[t]).join("&")),this.request(t,Object.assign(s||{},{method:"GET"}),i)},async post(t,e,s,i="POST",n=!1){return this.request(t,Object.assign(s||{},{method:i,body:JSON.stringify(e)}),n)},async patch(t,e,s,i=!1){return this.post(t,e,s,"PATCH",i)},async delete(t,e,s,i=!1){return this.post(t,e,s,"DELETE",i)}}),N=t=>({async list(e){return t.get("roles",e)},async get(e){return t.get("roles/"+e)},async options(t){const e=await this.list(t);return e.data.map(t=>({info:t.description||`(${I["a"].i18n.translate("role.description.placeholder")})`,text:t.title,value:t.name}))}}),P=t=>({async get(e={view:"panel"}){return t.get("system",e)},async install(e){const s=await t.post("system/install",e);return s.user},async register(e){return t.post("system/register",e)}}),R=t=>({async blueprint(){return t.get("site/blueprint")},async blueprints(){return t.get("site/blueprints")},async changeTitle(e){return t.patch("site/title",{title:e})},async children(e){return t.post("site/children/search",e)},async get(e={view:"panel"}){return t.get("site",e)},async options(){const e=await t.get("site",{select:"options"}),s=e.options;let i=[];return i.push({click:"rename",icon:"title",text:I["a"].i18n.translate("rename"),disabled:!s.changeTitle}),i},async update(e){return t.post("site",e)}}),q=t=>({async list(){return t.get("translations")},async get(e){return t.get("translations/"+e)},async options(){const t=await this.list(),e=t.data.map(t=>({value:t.id,text:t.name}));return e}}),F=t=>({async blueprint(e){return t.get("users/"+e+"/blueprint")},async blueprints(e,s){return t.get("users/"+e+"/blueprints",{section:s})},breadcrumb(t){return[{link:"/users/"+t.id,label:t.username}]},async changeEmail(e,s){return t.patch("users/"+e+"/email",{email:s})},async changeLanguage(e,s){return t.patch("users/"+e+"/language",{language:s})},async changeName(e,s){return t.patch("users/"+e+"/name",{name:s})},async changePassword(e,s){return t.patch("users/"+e+"/password",{password:s})},async changeRole(e,s){return t.patch("users/"+e+"/role",{role:s})},async create(e){return t.post("users",e)},async delete(e){return t.delete("users/"+e)},async deleteAvatar(e){return t.delete("users/"+e+"/avatar")},link(t,e){return"/"+this.url(t,e)},async list(e){return t.post(this.url(null,"search"),e)},async get(e,s){return t.get("users/"+e,s)},async options(e){const s=await t.get(this.url(e),{select:"options"}),i=s.options;let n=[];return n.push({click:"rename",icon:"title",text:I["a"].i18n.translate("user.changeName"),disabled:!i.changeName}),n.push({click:"email",icon:"email",text:I["a"].i18n.translate("user.changeEmail"),disabled:!i.changeEmail}),n.push({click:"role",icon:"bolt",text:I["a"].i18n.translate("user.changeRole"),disabled:!i.changeRole}),n.push({click:"password",icon:"key",text:I["a"].i18n.translate("user.changePassword"),disabled:!i.changePassword}),n.push({click:"language",icon:"globe",text:I["a"].i18n.translate("user.changeLanguage"),disabled:!i.changeLanguage}),n.push({click:"remove",icon:"trash",text:I["a"].i18n.translate("user.delete"),disabled:!i.delete}),n},async roles(e){const s=await t.get(this.url(e,"roles"));return s.data.map(t=>({info:t.description||`(${I["a"].i18n.translate("role.description.placeholder")})`,text:t.title,value:t.name}))},async search(e){return t.post("users/search",e)},async update(e,s){return t.patch("users/"+e,s)},url(t,e){let s=t?"users/"+t:"users";return e&&(s+="/"+e),s}}),U=(t={})=>{const e={endpoint:"/api",methodOverwrite:!0,onPrepare(t){return t},onStart(){},onComplete(){},onSuccess(){},onError(t){throw window.console.log(t.message),t}},s={...e,...t.config||{}};let i={...s,...M(s),...t};return i.auth=L(i),i.files=A(i),i.languages=B(i),i.pages=D(i),i.roles=N(i),i.system=P(i),i.site=R(i),i.translations=q(i),i.users=F(i),i.files.rename=i.files.changeName,i.pages.slug=i.pages.changeSlug,i.pages.status=i.pages.changeStatus,i.pages.template=i.pages.changeTemplate,i.pages.title=i.pages.changeTitle,i.site.title=i.site.changeTitle,i.system.info=i.system.get,i},z={install(t,e){t.prototype.$api=t.$api=U({config:{endpoint:O.api,onComplete:s=>{t.$api.requests=t.$api.requests.filter(t=>t!==s),0===t.$api.requests.length&&e.dispatch("isLoading",!1)},onError:t=>{O.debug&&window.console.error(t),403!==t.code||"Unauthenticated"!==t.message&&"access.panel"!==t.key||e.dispatch("user/logout",!0)},onParserError:t=>{throw e.dispatch("fatal",t),new Error("The JSON response from the API could not be parsed")},onPrepare:t=>(e.state.languages.current&&(t.headers["x-language"]=e.state.languages.current.code),t.headers["x-csrf"]=window.panel.csrf,t),onStart:(s,i=!1)=>{!1===i&&e.dispatch("isLoading",!0),t.$api.requests.push(s)},onSuccess:()=>{clearInterval(t.$api.ping),t.$api.ping=setInterval(t.$api.auth.user,3e5)}},ping:null,requests:[]}),t.$api.ping=setInterval(t.$api.auth.user,3e5)}},H={install(t){t.filter("t",(function(t){return t}))}},K={install(t){t.prototype.$events=new t({data(){return{entered:null}},created(){window.addEventListener("online",this.online),window.addEventListener("offline",this.offline),window.addEventListener("dragenter",this.dragenter,!1),window.addEventListener("dragover",this.prevent,!1),window.addEventListener("dragexit",this.prevent,!1),window.addEventListener("dragleave",this.dragleave,!1),window.addEventListener("drop",this.drop,!1),window.addEventListener("keydown",this.keydown,!1),window.addEventListener("keyup",this.keyup,!1),document.addEventListener("click",this.click,!1)},destroyed(){window.removeEventListener("online",this.online),window.removeEventListener("offline",this.offline),window.removeEventListener("dragenter",this.dragenter,!1),window.removeEventListener("dragover",this.prevent,!1),window.removeEventListener("dragexit",this.prevent,!1),window.removeEventListener("dragleave",this.dragleave,!1),window.removeEventListener("drop",this.drop,!1),window.removeEventListener("keydown",this.keydown,!1),window.removeEventListener("keyup",this.keyup,!1),document.removeEventListener("click",this.click,!1)},methods:{click(t){this.$emit("click",t)},drop(t){this.prevent(t),this.$emit("drop",t)},dragenter(t){this.entered=t.target,this.prevent(t),this.$emit("dragenter",t)},dragleave(t){this.prevent(t),this.entered===t.target&&this.$emit("dragleave",t)},keydown(t){let e=["keydown"];(t.metaKey||t.ctrlKey)&&e.push("cmd"),!0===t.altKey&&e.push("alt"),!0===t.shiftKey&&e.push("shift");let s=this.$helper.string.lcfirst(t.key);const i={escape:"esc",arrowUp:"up",arrowDown:"down",arrowLeft:"left",arrowRight:"right"};i[s]&&(s=i[s]),!1===["alt","control","shift","meta"].includes(s)&&e.push(s),this.$emit(e.join("."),t),this.$emit("keydown",t)},keyup(t){this.$emit("keyup",t)},online(t){this.$emit("online",t)},offline(t){this.$emit("offline",t)},prevent(t){t.stopPropagation(),t.preventDefault()}}})}},G=s("1dce"),Y=s.n(G),W=function(t){if(void 0!==t)return JSON.parse(JSON.stringify(t))},V=(t,e)=>{var s=null;return function(){var i=this,n=arguments;clearTimeout(s),s=setTimeout((function(){t.apply(i,n)}),e)}},J=t=>void 0!==I["a"].options.components[t],Z=t=>!!t.dataTransfer&&(!!t.dataTransfer.types&&(!0===t.dataTransfer.types.includes("Files")&&!1===t.dataTransfer.types.includes("text/plain"))),X=(t,e)=>{t=String(t);let s="";e=(e||2)-t.length;while(s.length{const e=String(t).split("/");if(2!==e.length)return"100%";const s=Number(e[0]),i=Number(e[1]);let n=100;return 0!==s&&0!==i&&(n=100/s*i),n+"%"},tt=(s("86c7"),(t,e=[],s="")=>{const i="-";return s="a-z0-9"+s,t=t.trim().toLowerCase(),e.forEach(e=>{e&&Object.keys(e).forEach(s=>{const i="/"!==s.substr(0,1),n=s.substring(1,s.length-1),a=i?s:n;t=t.replace(new RegExp(RegExp.escape(a),"g"),e[s])})}),t=t.replace("/[^\t\n\r -~]/",""),t=t.replace(new RegExp("[^"+s+"]","ig"),i),t=t.replace(new RegExp("["+RegExp.escape(i)+"]{2,}","g"),i),t=t.replace("/",i),t=t.replace(new RegExp("^[^"+s+"]+","g"),""),t=t.replace(new RegExp("[^"+s+"]+$","g"),""),t}),et=t=>{t=t||{};var e=t.desc?-1:1,s=-e,i=/^0/,n=/\s+/g,a=/^\s+|\s+$/g,r=/[^\x00-\x80]/,o=/^0x[0-9a-f]+$/i,l=/(0x[\da-fA-F]+|(^[\+\-]?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?(?=\D|\s|$))|\d+)/g,c=/(^([\w ]+,?[\w ]+)?[\w ]+,?[\w ]+\d+:\d+(:\d+)?[\w ]?|^\d{1,4}[\/\-]\d{1,4}[\/\-]\d{1,4}|^\w+, \w+ \d+, \d{4})/,u=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 h(t,e){return(!t.match(i)||1===e)&&parseFloat(t)||t.replace(n," ").replace(a,"")||0}return function(t,i){var n=u(t),a=u(i);if(!n&&!a)return 0;if(!n&&a)return s;if(n&&!a)return e;var l=p(n),d=p(a),m=parseInt(n.match(o),16)||1!==l.length&&Date.parse(n),f=parseInt(a.match(o),16)||m&&a.match(c)&&Date.parse(a)||null;if(f){if(mf)return e}for(var g=l.length,k=d.length,b=0,v=Math.max(g,k);b0)return e;if(_<0)return s;if(b===v-1)return 0}else{if($y)return e}}return 0}},st={camelToKebab(t){return t.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()},hasEmoji(t){if("string"!==typeof t)return!1;const e=t.match(/(?:[\u2700-\u27bf]|(?:\ud83c[\udde6-\uddff]){2}|[\ud800-\udbff][\udc00-\udfff]|[\u0023-\u0039]\ufe0f?\u20e3|\u3299|\u3297|\u303d|\u3030|\u24c2|\ud83c[\udd70-\udd71]|\ud83c[\udd7e-\udd7f]|\ud83c\udd8e|\ud83c[\udd91-\udd9a]|\ud83c[\udde6-\uddff]|[\ud83c\ude01-\ude02]|\ud83c\ude1a|\ud83c\ude2f|[\ud83c\ude32-\ude3a]|[\ud83c\ude50-\ude51]|\u203c|\u2049|[\u25aa-\u25ab]|\u25b6|\u25c0|[\u25fb-\u25fe]|\u00a9|\u00ae|\u2122|\u2139|\ud83c\udc04|[\u2600-\u26FF]|\u2b05|\u2b06|\u2b07|\u2b1b|\u2b1c|\u2b50|\u2b55|\u231a|\u231b|\u2328|\u23cf|[\u23e9-\u23f3]|[\u23f8-\u23fa]|\ud83c\udccf|\u2934|\u2935|[\u2190-\u21ff])/i);return null!==e&&null!==e.length},lcfirst(t){const e=String(t);return e.charAt(0).toLowerCase()+e.substr(1)},random(t){let e="";const s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",i=s.length;for(var n=0;n]+)>)/gi,"")},template(t,e={}){const s="{{[ ]{0,}",i="[ ]{0,}}}";return Object.keys(e).forEach(n=>{t=t.replace(new RegExp(`${s}${n}${i}`,"gi"),e[n]||"…"),!0===Array.isArray(e[n])&&(t=t.replace(new RegExp(`${s}${n}.count${i}|${s}${n}.length${i}`,"gi"),e[n].length||0))}),t.replace(/{{.*}}/gi,"…")},ucfirst(t){const e=String(t);return e.charAt(0).toUpperCase()+e.substr(1)},ucwords(t){const e=String(t);return e.split(/ /g).map(t=>this.ucfirst(t)).join(" ")}},it=(t,e)=>{const s={url:"/",field:"file",method:"POST",accept:"text",attributes:{},complete:function(){},error:function(){},success:function(){},progress:function(){}},i=Object.assign(s,e),n=new FormData;n.append(i.field,t,t.name),i.attributes&&Object.keys(i.attributes).forEach(t=>{n.append(t,i.attributes[t])});const a=new XMLHttpRequest,r=e=>{if(!e.lengthComputable||!i.progress)return;let s=Math.max(0,Math.min(100,e.loaded/e.total*100));i.progress(a,t,Math.ceil(s))};a.upload.addEventListener("loadstart",r),a.upload.addEventListener("progress",r),a.addEventListener("load",e=>{let s=null;try{s=JSON.parse(e.target.response)}catch(n){s={status:"error",message:"The file could not be uploaded"}}s.status&&"error"===s.status?i.error(a,t,s):(i.success(a,t,s),i.progress(a,t,100))}),a.addEventListener("error",e=>{const s=JSON.parse(e.target.response);i.error(a,t,s),i.progress(a,t,100)}),a.open("POST",i.url,!0),i.headers&&Object.keys(i.headers).forEach(t=>{const e=i.headers[t];a.setRequestHeader(t,e)}),a.send(n)},nt=function(){var t,e,s="";for(t=0;t<32;t++)e=16*Math.random()|0,8!=t&&12!=t&&16!=t&&20!=t||(s+="-"),s+=(12==t?4:16==t?3&e|8:e).toString(16);return s},at={datetime(t,e,s,i,n="day"){return e=t.$library.dayjs.utc(e),s?!e||!e.isValid()||(s=t.$library.dayjs.utc(s),e.isSame(s,n)||e[i](s,n)):e&&e.isValid()}},rt={install(t){Array.prototype.sortBy=function(e){const s=t.prototype.$helper.sort(),i=e.split(" "),n=i[0],a=i[1]||"asc";return this.sort((t,e)=>{const i=String(t[n]).toLowerCase(),r=String(e[n]).toLowerCase();return"desc"===a?s(r,i):s(i,r)})},t.prototype.$helper={clone:W,isComponent:J,isUploadEvent:Z,debounce:V,pad:X,ratio:Q,slug:tt,sort:et,string:st,upload:it,uuid:nt,validate:at}}},ot=(s("64e4"),{}),lt=Object(c["a"])(ot,y,_,!1,null,null,null),ct=(lt.exports,function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-overlay",{ref:"overlay",attrs:{autofocus:t.autofocus,centered:!0},on:{ready:function(e){return t.$emit("ready")}}},[s("div",{ref:"dialog",staticClass:"k-dialog",class:t.$vnode.data.staticClass,attrs:{"data-size":t.size},on:{mousedown:function(t){t.stopPropagation()}}},[t.notification?s("div",{staticClass:"k-dialog-notification",attrs:{"data-theme":t.notification.type}},[s("p",[t._v(t._s(t.notification.message))]),s("k-button",{attrs:{icon:"cancel"},on:{click:function(e){t.notification=null}}})],1):t._e(),s("div",{staticClass:"k-dialog-body"},[t._t("default")],2),t.$slots["footer"]||t.cancelButton||t.submitButton?s("footer",{staticClass:"k-dialog-footer"},[t._t("footer",[s("k-button-group",[s("span",[t.cancelButton?s("k-button",{staticClass:"k-dialog-button-cancel",attrs:{icon:"cancel"},on:{click:t.cancel}},[t._v(" "+t._s(t.cancelButtonLabel)+" ")]):t._e()],1),s("span",[t.submitButtonConfig?s("k-button",{staticClass:"k-dialog-button-submit",attrs:{icon:t.icon,theme:t.theme},on:{click:t.submit}},[t._v(" "+t._s(t.submitButtonLabel)+" ")]):t._e()],1)])])],2):t._e()])])}),ut=[],dt={props:{autofocus:{type:Boolean,default:!0},cancelButton:{type:[String,Boolean],default:!0},icon:{type:String,default:"check"},size:{type:String,default:"default"},submitButton:{type:[String,Boolean],default:!0},theme:String,visible:Boolean},data(){return{notification:null}},computed:{cancelButtonLabel(){return!1!==this.cancelButton&&(!0===this.cancelButton||0===this.cancelButton.length?this.$t("cancel"):this.cancelButton)},submitButtonConfig(){return void 0!==this.$attrs["button"]?this.$attrs["button"]:void 0===this.submitButton||this.submitButton},submitButtonLabel(){return!0===this.submitButton||0===this.submitButton.length?this.$t("confirm"):this.submitButton}},created(){this.$events.$on("keydown.esc",this.close,!1)},destroyed(){this.$events.$off("keydown.esc",this.close,!1)},mounted(){this.visible&&this.$nextTick(this.open)},methods:{open(){this.$store.dispatch("dialog",!0),this.notification=null,this.$refs.overlay.open(),this.$emit("open"),this.$events.$on("keydown.esc",this.close)},close(){this.notification=null,this.$refs.overlay&&this.$refs.overlay.close(),this.$emit("close"),this.$events.$off("keydown.esc",this.close),this.$store.dispatch("dialog",!1)},cancel(){this.$emit("cancel"),this.close()},focus(){if(this.$refs.dialog&&this.$refs.dialog.querySelector){const t=this.$refs.dialog.querySelector(".k-dialog-button-cancel");t&&"function"===typeof t.focus&&t.focus()}},error(t){this.notification={message:t,type:"error"}},submit(){this.$emit("submit")},success(t){this.notification={message:t,type:"success"}}}},pt=dt,ht=(s("a5f3"),Object(c["a"])(pt,ct,ut,!1,null,null,null)),mt=ht.exports,ft=function(){var t=this,e=t.$createElement,s=t._self._c||e;return t.notification?s("k-dialog",{ref:"dialog",staticClass:"k-error-dialog",attrs:{"cancel-button":!1,visible:!0},on:{close:t.exit,submit:function(e){return t.$refs.dialog.close()}}},[s("k-text",[t._v(t._s(t.notification.message))]),t.notification.details&&Object.keys(t.notification.details).length?s("dl",{staticClass:"k-error-details"},[t._l(t.notification.details,(function(e,i){return[s("dt",{key:"detail-label-"+i},[t._v(" "+t._s(e.label)+" ")]),s("dd",{key:"detail-message-"+i},["object"===typeof e.message?[s("ul",t._l(e.message,(function(e,i){return s("li",{key:i},[t._v(" "+t._s(e)+" ")])})),0)]:[t._v(" "+t._s(e.message)+" ")]],2)]}))],2):t._e()],1):t._e()},gt=[],kt={mixins:[m],computed:{notification(){let t=this.$store.state.notification;return"error"===t.type?t:null}},methods:{enter(){this.$nextTick(()=>{this.$el&&this.$el.querySelector&&this.$el.querySelector(".k-dialog-footer .k-button").focus()})},exit(){this.$store.dispatch("notification/close")}}},bt=kt,vt=(s("7737"),Object(c["a"])(bt,ft,gt,!1,null,null,null)),$t=vt.exports,yt=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-remove-dialog",{ref:"dialog",attrs:{text:t.$t("file.delete.confirm",{filename:t.filename})},on:{submit:t.submit}})},_t=[],wt={mixins:[m],data(){return{id:null,parent:null,filename:null}},methods:{async open(t,e){try{const s=await this.$api.files.get(t,e);this.id=s.id,this.filename=s.filename,this.parent=t,this.$refs.dialog.open()}catch(s){this.$store.dispatch("notification/error",s)}},async submit(){try{await this.$api.files.delete(this.parent,this.filename),this.$store.dispatch("content/remove","files/"+this.id),this.$store.dispatch("notification/success",":)"),this.$events.$emit("file.delete",this.id),this.$emit("success"),this.$refs.dialog.close()}catch(t){this.$refs.dialog.error(t.message)}}}},xt=wt,Ot=Object(c["a"])(xt,yt,_t,!1,null,null,null),Ct=Ot.exports,St=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-form-dialog",{ref:"dialog",attrs:{fields:t.fields,"submit-button":t.$t("rename")},on:{input:function(e){t.file.name=t.sluggify(t.file.name)},submit:t.submit},model:{value:t.file,callback:function(e){t.file=e},expression:"file"}})},Et=[],jt={mixins:[m],data(){return{parent:null,file:{id:null,name:null,filename:null,extension:null}}},computed:{fields(){return{name:{label:this.$t("name"),type:"text",required:!0,icon:"title",after:"."+this.file.extension,preselect:!0}}},slugs(){return this.$store.state.languages.default?this.$store.state.languages.default.rules:this.system.slugs},system(){return this.$store.state.system.info}},methods:{async open(t,e){try{this.file=await this.$api.files.get(t,e,{select:["id","filename","name","extension"]}),this.parent=t,this.$refs.dialog.open()}catch(s){this.$store.dispatch("notification/error",s)}},sluggify(t){return this.$helper.slug(t,[this.slugs,this.system.ascii],"@._-")},async submit(){if(this.file.name=this.file.name.trim(),0!==this.file.name.length)try{const t=await this.$api.files.changeName(this.parent,this.file.filename,this.file.name);this.$store.dispatch("content/move",["files/"+this.file.id,"files/"+t.id]),this.$store.dispatch("notification/success",":)"),this.$emit("success",t),this.$events.$emit("file.changeName",t),this.$refs.dialog.close()}catch(t){this.$refs.dialog.error(t.message)}else this.$refs.dialog.error(this.$t("error.file.changeName.empty"))}}},Tt=jt,Lt=Object(c["a"])(Tt,St,Et,!1,null,null,null),It=Lt.exports,At=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-form-dialog",{ref:"dialog",attrs:{fields:t.fields,"submit-button":t.$t("change")},on:{submit:t.submit},model:{value:t.form,callback:function(e){t.form=e},expression:"form"}})},Bt=[],Dt={mixins:[m],data(){return{file:{id:null},form:{position:null},siblings:[],api:null}},computed:{fields(){return{position:{name:"position",label:this.$t("file.sort"),type:"select",empty:!1,options:this.sortingOptions}}},sortingOptions(){let t=[],e=0;return this.siblings.forEach(s=>{if(s.id===this.file.id||s.num<1)return!1;e++,t.push({value:e,text:e}),t.push({value:s.id,text:s.filename,disabled:!0})}),t.push({value:e+1,text:e+1}),t}},methods:{async open(t,e,s){try{this.file=e;const i=await this.$api.post(t+"/files/search");this.siblings=i.data,this.form.position=this.siblings.findIndex(t=>t.id===e.id)+1,this.api=s,this.$refs.dialog.open()}catch(i){this.$store.dispatch("notification/error",i)}},async submit(){try{const t=this.siblings.findIndex(t=>t.id===this.file.id),e=this.form.position-1,s=this.$helper.clone(this.siblings);s.splice(t,1),s.splice(e,0,this.file),await this.$api.patch(this.api+"/files/sort",{files:s.map(t=>t.id),index:0}),this.success({message:":)",event:"file.sort"})}catch(t){this.$refs.dialog.error(t.message)}}}},Mt=Dt,Nt=Object(c["a"])(Mt,At,Bt,!1,null,null,null),Pt=Nt.exports,Rt=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-dialog",{ref:"dialog",staticClass:"k-files-dialog",attrs:{size:"medium"},on:{cancel:function(e){return t.$emit("cancel")},submit:t.submit}},[t.issue?[s("k-box",{attrs:{text:t.issue,theme:"negative"}})]:[t.options.search?s("k-input",{staticClass:"k-dialog-search",attrs:{autofocus:!0,placeholder:t.$t("search")+" …",type:"text",icon:"search"},model:{value:t.search,callback:function(e){t.search=e},expression:"search"}}):t._e(),t.models.length?[s("k-list",t._l(t.models,(function(e){return s("k-list-item",{key:e.id,attrs:{text:e.text,info:e.info,image:e.image,icon:e.icon},on:{click:function(s){return t.toggle(e)}}},[t.isSelected(e)?s("k-button",{attrs:{slot:"options",autofocus:!0,icon:t.checkedIcon,tooltip:t.$t("remove"),theme:"positive"},slot:"options"}):s("k-button",{attrs:{slot:"options",autofocus:!0,tooltip:t.$t("select"),icon:"circle-outline"},slot:"options"})],1)})),1),s("k-pagination",t._b({staticClass:"k-dialog-pagination",attrs:{details:!0,dropdown:!1,align:"center"},on:{paginate:t.paginate}},"k-pagination",t.pagination,!1))]:s("k-empty",{attrs:{icon:"image"}},[t._v(" "+t._s(t.$t("dialog.files.empty"))+" ")])]],2)},qt=[],Ft={data(){return{models:[],issue:null,selected:{},options:{endpoint:null,max:null,multiple:!0,parent:null,selected:[],search:!0},search:null,pagination:{limit:20,page:1,total:0}}},computed:{multiple(){return!0===this.options.multiple&&1!==this.options.max},checkedIcon(){return!0===this.multiple?"check":"circle-filled"}},watch:{search(){this.updateSearch()}},created(){this.updateSearch=V(this.updateSearch,200)},methods:{fetch(){const t={page:this.pagination.page,search:this.search,...this.fetchData||{}};return this.$api.get(this.options.endpoint,t).then(t=>{this.models=t.data,this.pagination=t.pagination,this.onFetched&&this.onFetched(t)}).catch(t=>{this.models=[],this.issue=t.message})},open(t,e){this.pagination.page=0,this.search=null;let s=!0;Array.isArray(t)?(this.models=t,s=!1):(this.models=[],e=t),this.options={...this.options,...e},this.selected={},this.options.selected.forEach(t=>{this.$set(this.selected,t,{id:t})}),s?this.fetch().then(()=>{this.$refs.dialog.open()}):this.$refs.dialog.open()},paginate(t){this.pagination.page=t.page,this.pagination.limit=t.limit,this.fetch()},submit(){this.$emit("submit",Object.values(this.selected)),this.$refs.dialog.close()},isSelected(t){return void 0!==this.selected[t.id]},toggle(t){!1!==this.options.multiple&&1!==this.options.max||(this.selected={}),!0!==this.isSelected(t)?this.options.max&&this.options.max<=Object.keys(this.selected).length||this.$set(this.selected,t.id,t):this.$delete(this.selected,t.id)},updateSearch(){this.pagination.page=0,this.fetch()}}},Ut={mixins:[Ft]},zt=Ut,Ht=(s("bf53"),Object(c["a"])(zt,Rt,qt,!1,null,null,null)),Kt=Ht.exports,Gt=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-dialog",t._g(t._b({ref:"dialog"},"k-dialog",t.$props,!1),t.$listeners),[s("k-form",{ref:"form",attrs:{fields:t.fields,novalidate:t.novalidate},on:{input:function(e){return t.$emit("input",e)},submit:function(e){return t.$emit("submit",e)}},model:{value:t.value,callback:function(e){t.value=e},expression:"value"}})],1)},Yt=[],Wt={mixins:[m],props:{fields:{type:[Array,Object],default(){return[]}},novalidate:{type:Boolean,default:!0},size:{type:String,default:"medium"},submitButton:{type:[String,Boolean],default(){return this.$t("save")}},theme:{type:String,default:"positive"},value:{type:Object,default(){return{}}}}},Vt=Wt,Jt=Object(c["a"])(Vt,Gt,Yt,!1,null,null,null),Zt=Jt.exports,Xt=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-form-dialog",{ref:"dialog",attrs:{fields:t.fields,"submit-button":t.$t("language.create")},on:{submit:t.submit},model:{value:t.language,callback:function(e){t.language=e},expression:"language"}})},Qt=[],te={mixins:[m],data(){return{language:{name:"",code:"",direction:"ltr",locale:""}}},computed:{fields(){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(){return this.$store.state.system.info}},watch:{"language.name"(t){this.onNameChanges(t)},"language.code"(t){this.language.code=this.$helper.slug(t,[this.system.ascii])}},methods:{onNameChanges(t){this.language.code=this.$helper.slug(t,[this.language.rules,this.system.ascii]).substr(0,2)},open(){this.language={name:"",code:"",direction:"ltr"},this.$refs.dialog.open()},async submit(){this.language.locale&&(this.language.locale=this.language.locale.trim()||null);try{await this.$api.languages.create({name:this.language.name,code:this.language.code,direction:this.language.direction,locale:this.language.locale}),this.$store.dispatch("languages/load"),this.success({message:":)",event:"language.create"})}catch(t){this.$refs.dialog.error(t.message)}}}},ee=te,se=Object(c["a"])(ee,Xt,Qt,!1,null,null,null),ie=se.exports,ne=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-remove-dialog",{ref:"dialog",attrs:{text:t.$t("language.delete.confirm",{name:t.language.name})},on:{submit:t.submit}})},ae=[],re={mixins:[m],data(){return{language:{name:null}}},methods:{async open(t){try{this.language=await this.$api.languages.get(t),this.$refs.dialog.open()}catch(e){this.$store.dispatch("notification/error",e)}},async submit(){try{await this.$api.languages.delete(this.language.code),this.$store.dispatch("languages/load"),this.success({message:this.$t("language.deleted"),event:"language.delete"})}catch(t){this.$refs.dialog.error(t.message)}}}},oe=re,le=Object(c["a"])(oe,ne,ae,!1,null,null,null),ce=le.exports,ue=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-form-dialog",{ref:"dialog",attrs:{fields:t.fields,size:"medium"},on:{submit:t.submit},model:{value:t.language,callback:function(e){t.language=e},expression:"language"}})},de=[],pe={mixins:[ie],computed:{fields(){let t=ie.computed.fields.apply(this);return t.code.disabled=!0,"object"===typeof this.language.locale&&(t.locale={label:t.locale.label,type:"info",text:this.$t("language.locale.warning")}),t}},methods:{onNameChanges(){return!1},async open(t){try{this.language=await this.$api.languages.get(t);const e=Object.keys(this.language.locale);1===e.length&&(this.language.locale=this.language.locale[e[0]]),this.$refs.dialog.open()}catch(e){this.$store.dispatch("notification/error",e)}},async submit(){if(0===this.language.name.length)return this.$refs.dialog.error(this.$t("error.language.name"));"string"===typeof this.language.locale&&(this.language.locale=this.language.locale.trim()||null);try{await this.$api.languages.update(this.language.code,{name:this.language.name,direction:this.language.direction,locale:this.language.locale}),this.$store.dispatch("languages/load"),this.success({message:this.$t("language.updated"),event:"language.update"})}catch(t){this.$refs.dialog.error(t.message)}}}},he=pe,me=Object(c["a"])(he,ue,de,!1,null,null,null),fe=me.exports,ge=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-form-dialog",{ref:"dialog",attrs:{fields:t.fields,"submit-button":t.$t("page.draft.create")},on:{submit:t.submit,close:t.reset},model:{value:t.page,callback:function(e){t.page=e},expression:"page"}})},ke=[],be={mixins:[m],data(){return{parent:null,section:null,templates:[],page:this.emptyForm()}},computed:{fields(){let t={title:{label:this.$t("title"),type:"text",required:!0,icon:"title"},slug:{label:this.$t("slug"),type:"text",required:!0,counter:!1,icon:"url"}};return(this.templates.length>1||O.debug)&&(t.template={name:"template",label:this.$t("template"),type:"select",disabled:1===this.templates.length,required:!0,icon:"code",empty:!1,options:this.templates}),t},slugs(){return this.$store.state.languages.default?this.$store.state.languages.default.rules:this.system.slugs},system(){return this.$store.state.system.info}},watch:{"page.title"(t){this.page.slug=this.$helper.slug(t,[this.slugs,this.system.ascii])}},methods:{emptyForm(){return{title:"",slug:"",template:null}},async open(t,e,s){this.parent=t,this.section=s;try{const t=await this.$api.get(e,{section:s});this.templates=t.map(t=>({value:t.name,text:t.title})),this.templates[0]&&(this.page.template=this.templates[0].value),this.$refs.dialog.open()}catch(i){this.$store.dispatch("notification/error",i)}},async submit(){if(this.page.title=this.page.title.trim(),0===this.page.title.length)return void this.$refs.dialog.error(this.$t("error.page.changeTitle.empty"));const t={template:this.page.template,slug:this.page.slug,content:{title:this.page.title}};try{const e=await this.$api.post(this.parent+"/children",t);this.success({route:this.$api.pages.link(e.id),message:":)",event:"page.create"})}catch(e){this.$refs.dialog.error(e.message)}},reset(){this.page=this.emptyForm()}}},ve=be,$e=Object(c["a"])(ve,ge,ke,!1,null,null,null),ye=$e.exports,_e=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-form-dialog",{ref:"dialog",attrs:{fields:t.fields,"submit-button":t.$t("duplicate")},on:{submit:t.submit},model:{value:t.page,callback:function(e){t.page=e},expression:"page"}})},we=[],xe={mixins:[m],data(){return{page:{children:!1,files:!1,hasChildren:!1,hasDrafts:!1,hasFiles:!1,id:null,slug:""}}},computed:{fields(){const t=this.page.hasChildren||this.page.hasDrafts,e=this.page.hasFiles;let s={slug:{label:this.$t("slug"),type:"text",required:!0,counter:!1,spellcheck:!1,icon:"url"}};return e&&(s.files={label:this.$t("page.duplicate.files"),type:"toggle",required:!0,width:t?"1/2":null}),t&&(s.children={label:this.$t("page.duplicate.pages"),type:"toggle",required:!0,width:e?"1/2":null}),s},slugs(){return this.$store.state.languages.default?this.$store.state.languages.default.rules:this.system.slugs},system(){return this.$store.state.system.info}},watch:{"page.slug"(t){this.page.slug=this.$helper.slug(t,[this.slugs,this.system.ascii])}},methods:{async open(t){try{const e=await this.$api.pages.get(t,{language:"@default",select:"id,slug,hasChildren,hasDrafts,hasFiles,title"});this.page.id=e.id,this.page.slug=e.slug+"-"+this.$helper.slug(this.$t("page.duplicate.appendix")),this.page.hasChildren=e.hasChildren,this.page.hasDrafts=e.hasDrafts,this.page.hasFiles=e.hasFiles,this.$refs.dialog.open()}catch(e){this.$store.dispatch("notification/error",e)}},async submit(){try{const t=await this.$api.pages.duplicate(this.page.id,this.page.slug,{children:this.page.children,files:this.page.files});this.success({route:this.$api.pages.link(t.id),message:":)",event:"page.duplicate"})}catch(t){this.$refs.dialog.error(t.message)}}}},Oe=xe,Ce=Object(c["a"])(Oe,_e,we,!1,null,null,null),Se=Ce.exports,Ee=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-remove-dialog",{ref:"dialog",attrs:{size:t.hasSubpages?"medium":"small"},on:{submit:t.submit,close:t.reset}},[t.page.hasChildren||t.page.hasDrafts?[s("k-text",{domProps:{innerHTML:t._s(t.$t("page.delete.confirm",{title:t.page.title}))}}),s("div",{staticClass:"k-page-remove-warning"},[s("k-box",{attrs:{theme:"negative"},domProps:{innerHTML:t._s(t.$t("page.delete.confirm.subpages"))}})],1),t.hasSubpages?s("k-form",{attrs:{fields:t.fields},on:{submit:t.submit},model:{value:t.model,callback:function(e){t.model=e},expression:"model"}}):t._e()]:[s("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)},je=[],Te={mixins:[m],data(){return{page:{title:null,hasChildren:!1,hasDrafts:!1},model:this.emptyForm()}},computed:{hasSubpages(){return this.page.hasChildren||this.page.hasDrafts},fields(){return{check:{label:this.$t("page.delete.confirm.title"),type:"text",counter:!1}}}},methods:{emptyForm(){return{check:null}},async open(t){try{this.page=await this.$api.pages.get(t,{select:"id, title, hasChildren, hasDrafts, parent"}),this.$refs.dialog.open()}catch(e){this.$store.dispatch("notification/error",e)}},async submit(){if(this.hasSubpages&&this.model.check!==this.page.title)return this.$refs.dialog.error(this.$t("error.page.delete.confirm"));try{await this.$api.pages.delete(this.page.id,{force:!0}),this.$store.dispatch("content/remove","pages/"+this.page.id);const t={message:":)",event:"page.delete"};this.$route.params.path&&this.page.id===this.$route.params.path.replace(/\+/g,"/")&&(this.page.parent?t.route=this.$api.pages.link(this.page.parent.id):t.route="/pages"),this.success(t)}catch(t){this.$refs.dialog.error(t.message)}},reset(){this.model=this.emptyForm()}}},Le=Te,Ie=(s("12fb"),Object(c["a"])(Le,Ee,je,!1,null,null,null)),Ae=Ie.exports,Be=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-dialog",{ref:"dialog",staticClass:"k-page-rename-dialog",attrs:{autofocus:!1,"submit-button":t.$t("change"),size:"medium",theme:"positive"},on:{ready:t.onReady,submit:function(e){return t.$refs.form.submit()}}},[s("k-form",{ref:"form",on:{submit:t.submit}},[s("k-text-field",t._b({ref:"title",model:{value:t.title,callback:function(e){t.title=e},expression:"title"}},"k-text-field",t.fields.title,!1)),s("k-text-field",t._b({ref:"slug",attrs:{value:t.slug},on:{input:function(e){return t.sluggify(e)}}},"k-text-field",t.fields.slug,!1),[s("k-button",{attrs:{slot:"options",disabled:t.fields.slug.disabled,icon:"wand"},on:{click:function(e){return t.sluggify(t.title)}},slot:"options"},[t._v(" "+t._s(t.$t("page.changeSlug.fromTitle"))+" ")])],1)],1)],1)},De=[],Me={mixins:[m],data(){return{page:{id:null,parent:null,title:null},permissions:{},select:"title",slug:null,title:null,url:null}},computed:{fields(){return{title:{label:this.$t("title"),type:"text",required:!0,icon:"title",disabled:!1===this.permissions.changeTitle},slug:{name:"slug",label:this.$t("slug"),type:"text",required:!0,icon:"url",help:"/"+this.url,counter:!1,disabled:!1===this.permissions.changeSlug}}},slugs(){return this.$store.state.languages.current?this.$store.state.languages.current.rules:this.system.slugs},system(){return this.$store.state.system.info}},methods:{onReady(){this.$refs[this.select]&&this.$refs[this.select].select()},async open(t,e,s="title"){try{this.page=await this.$api.pages.get(t,{view:"panel"}),this.select=s,this.title=this.page.title,this.sluggify(this.page.slug),this.permissions=e,this.$refs.dialog.open()}catch(i){this.$store.dispatch("notification/error",i)}},sluggify(t){t=t.trim(),this.slug=this.$helper.slug(t,[this.slugs,this.system.ascii]),this.page.parents?this.url=this.page.parents.map(t=>t.slug).concat([this.slug]).join("/"):this.url=this.slug},async submit(){if(this.title=this.title.trim(),this.title===this.page.title&&this.slug===this.page.slug)return this.$refs.dialog.close(),void this.$store.dispatch("notification/success",":)");if(0===this.title.length)return this.$refs.dialog.error(this.$t("error.page.changeTitle.empty"));if(0===this.slug.length)return this.$refs.dialog.error(this.$t("error.page.slug.invalid"));try{let t={message:":)",event:[]};if(this.title!==this.page.title&&(await this.$api.pages.changeTitle(this.page.id,this.title),t.event.push("page.changeTitle")),this.slug!==this.page.slug){const e=await this.$api.pages.changeSlug(this.page.id,this.slug);this.$store.dispatch("content/move",["pages/"+this.page.id,"pages/"+e.id]),t.event.push("page.changeSlug"),!this.$route.params.path||this.page.id!==this.$route.params.path.replace(/\+/g,"/")||this.$store.state.languages.current&&!0!==this.$store.state.languages.current.default||(t.route=this.$api.pages.link(e.id),t.emit=!1,delete t.event)}this.success(t)}catch(t){this.$refs.dialog.error(t.message)}}}},Ne=Me,Pe=(s("5f52"),Object(c["a"])(Ne,Be,De,!1,null,null,null)),Re=Pe.exports,qe=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-form-dialog",{ref:"dialog",attrs:{fields:t.fields,"submit-button":t.$t("change")},on:{submit:t.submit},model:{value:t.form,callback:function(e){t.form=e},expression:"form"}})},Fe=[],Ue={mixins:[m],data(){return{page:{id:null,siblings:[]},isBlocked:!1,isIncomplete:!1,form:{status:null,position:null},states:{}}},computed:{fields(){let t={status:{name:"status",label:this.$t("page.changeStatus.select"),type:"radio",required:!0,options:Object.keys(this.states).map(t=>({value:t,text:this.states[t].label,info:this.states[t].text}))}};return"listed"===this.form.status&&"default"===this.page.blueprint.num&&(t.position={name:"position",label:this.$t("page.changeStatus.position"),type:"select",empty:!1,options:this.sortingOptions}),t},sortingOptions(){let t=[],e=0;return this.page.siblings.forEach(s=>{if(s.id===this.page.id||s.num<1)return!1;e++,t.push({value:e,text:e}),t.push({value:s.id,text:s.title,disabled:!0})}),t.push({value:e+1,text:e+1}),t}},methods:{async open(t){try{const s=await this.$api.pages.get(t,{select:["id","status","num","errors","blueprint"]});if(!1===s.blueprint.options.changeStatus)return this.$store.dispatch("notification/error",{message:this.$t("error.page.changeStatus.permission")});if("draft"===s.status&&Object.keys(s.errors).length>0)return this.$store.dispatch("notification/error",{message:this.$t("error.page.changeStatus.incomplete"),details:s.errors});if("default"===s.blueprint.num)try{const e=await this.$api.pages.get(t,{select:["siblings"]});this.setup({...s,siblings:e.siblings})}catch(e){this.$store.dispatch("notification/error",e)}else this.setup({...s,siblings:[]})}catch(e){this.$store.dispatch("notification/error",e)}},setup(t){this.page=t,this.form.position=t.num||t.siblings.length+1,this.form.status=t.status,this.states=t.blueprint.status,this.$refs.dialog.open()},async submit(){try{await this.$api.pages.changeStatus(this.page.id,this.form.status,this.form.position||1),this.success({message:":)",event:"page.changeStatus"})}catch(t){this.$refs.dialog.error(t.message)}}}},ze=Ue,He=Object(c["a"])(ze,qe,Fe,!1,null,null,null),Ke=He.exports,Ge={extends:Ke,computed:{fields(){return{position:{name:"position",label:this.$t("page.changeStatus.position"),type:"select",empty:!1,options:this.sortingOptions}}}},methods:{async open(t){try{const e=await this.$api.pages.get(t,{select:["id","status","num","errors","blueprint","siblings"]});this.setup(e)}catch(e){this.$store.dispatch("notification/error",e)}},async submit(){try{await this.$api.pages.status(this.page.id,"listed",this.form.position||1),this.success({message:":)",event:"page.sort"})}catch(t){this.$refs.dialog.error(t.message)}}}},Ye=Ge,We=Object(c["a"])(Ye,w,x,!1,null,null,null),Ve=We.exports,Je=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-form-dialog",{ref:"dialog",attrs:{fields:t.fields,"submit-button":t.$t("change")},on:{submit:t.submit},model:{value:t.page,callback:function(e){t.page=e},expression:"page"}})},Ze=[],Xe={mixins:[m],data(){return{blueprints:[],page:{id:null,template:null}}},computed:{fields(){return{template:{label:this.$t("template"),type:"select",required:!0,empty:!1,options:this.page.blueprints,icon:"template"}}}},methods:{async open(t){try{const e=await this.$api.pages.get(t,{select:["id","template","blueprints"]});if(e.blueprints.length<=1)return this.$store.dispatch("notification/error",{message:this.$t("error.page.changeTemplate.invalid",{slug:e.id})});this.page=e,this.page.blueprints=this.page.blueprints.map(t=>({text:t.title,value:t.name})),this.$refs.dialog.open()}catch(e){this.$store.dispatch("notification/error",e)}},async submit(){this.$events.$emit("keydown.cmd.s");try{await this.$api.pages.changeTemplate(this.page.id,this.page.template),this.success({message:":)",event:"page.changeTemplate"})}catch(t){this.$refs.dialog.error(t.message)}}}},Qe=Xe,ts=Object(c["a"])(Qe,Je,Ze,!1,null,null,null),es=ts.exports,ss=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-dialog",{ref:"dialog",staticClass:"k-pages-dialog",attrs:{size:"medium"},on:{cancel:function(e){return t.$emit("cancel")},submit:t.submit}},[t.issue?[s("k-box",{attrs:{text:t.issue,theme:"negative"}})]:[t.model?s("header",{staticClass:"k-pages-dialog-navbar"},[s("k-button",{attrs:{disabled:!t.model.id,tooltip:t.$t("back"),icon:"angle-left"},on:{click:t.back}}),s("k-headline",[t._v(t._s(t.model.title))])],1):t._e(),t.options.search?s("k-input",{staticClass:"k-dialog-search",attrs:{autofocus:!0,placeholder:t.$t("search")+" …",type:"text",icon:"search"},model:{value:t.search,callback:function(e){t.search=e},expression:"search"}}):t._e(),t.models.length?[s("k-list",t._l(t.models,(function(e){return s("k-list-item",{key:e.id,attrs:{text:e.text,info:e.info,image:e.image,icon:e.icon},on:{click:function(s){return t.toggle(e)}}},[s("template",{slot:"options"},[t.isSelected(e)?s("k-button",{attrs:{slot:"options",autofocus:!0,icon:t.checkedIcon,tooltip:t.$t("remove"),theme:"positive"},slot:"options"}):s("k-button",{attrs:{slot:"options",autofocus:!0,tooltip:t.$t("select"),icon:"circle-outline"},slot:"options"}),t.model?s("k-button",{attrs:{disabled:!e.hasChildren,tooltip:t.$t("open"),icon:"angle-right"},on:{click:function(s){return s.stopPropagation(),t.go(e)}}}):t._e()],1)],2)})),1),s("k-pagination",t._b({staticClass:"k-dialog-pagination",attrs:{details:!0,dropdown:!1,align:"center"},on:{paginate:t.paginate}},"k-pagination",t.pagination,!1))]:s("k-empty",{attrs:{icon:"page"}},[t._v(" "+t._s(t.$t("dialog.pages.empty"))+" ")])]],2)},is=[],ns={mixins:[Ft],data(){const t=Ft.data();return{...t,model:{title:null,parent:null},options:{...t.options,parent:null}}},computed:{fetchData(){return{parent:this.options.parent}}},methods:{back(){this.options.parent=this.model.parent,this.pagination.page=1,this.fetch()},go(t){this.options.parent=t.id,this.pagination.page=1,this.fetch()},onFetched(t){this.model=t.model}}},as=ns,rs=(s("ac27"),Object(c["a"])(as,ss,is,!1,null,null,null)),os=rs.exports,ls=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-text-dialog",t._g(t._b({ref:"dialog"},"k-text-dialog",t.$props,!1),t.$listeners),[t._t("default")],2)},cs=[],us={mixins:[m],props:{icon:{type:String,default:"trash"},submitButton:{type:[String,Boolean],default(){return this.$t("delete")}},text:String,theme:{type:String,default:"negative"}}},ds=us,ps=Object(c["a"])(ds,ls,cs,!1,null,null,null),hs=ps.exports,ms=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-form-dialog",{ref:"dialog",attrs:{fields:t.fields,"submit-button":t.$t("rename")},on:{submit:t.submit},model:{value:t.site,callback:function(e){t.site=e},expression:"site"}})},fs=[],gs={mixins:[m],data(){return{site:{id:null,title:null}}},computed:{fields(){return{title:{label:this.$t("title"),type:"text",required:!0,icon:"title",preselect:!0}}}},methods:{async open(){try{this.site=await this.$api.site.get({select:["title"]}),this.$refs.dialog.open()}catch(t){this.$store.dispatch("notification/error",t)}},async submit(){if(this.site.title=this.site.title.trim(),0!==this.site.title.length)try{await this.$api.site.changeTitle(this.site.title),this.$store.dispatch("system/title",this.site.title),this.success({message:":)",event:"site.changeTitle"})}catch(t){this.$refs.dialog.error(t.message)}else this.$refs.dialog.error(this.$t("error.site.changeTitle.empty"))}}},ks=gs,bs=Object(c["a"])(ks,ms,fs,!1,null,null,null),vs=bs.exports,$s=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-dialog",t._g(t._b({ref:"dialog"},"k-dialog",t.$props,!1),t.$listeners),[t._t("default",[s("k-text",{domProps:{innerHTML:t._s(t.text)}})])],2)},ys=[],_s={mixins:[m],props:{text:String}},ws=_s,xs=Object(c["a"])(ws,$s,ys,!1,null,null,null),Os=xs.exports,Cs=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-form-dialog",{ref:"dialog",attrs:{fields:t.fields,"submit-button":t.$t("create")},on:{submit:t.create,close:t.reset},model:{value:t.user,callback:function(e){t.user=e},expression:"user"}})},Ss=[],Es={mixins:[m],data(){return{user:this.emptyForm(),languages:[],roles:[]}},computed:{fields(){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:{async create(){try{await this.$api.users.create(this.user),this.success({message:":)",event:"user.create"})}catch(t){this.$refs.dialog.error(t.message)}},emptyForm(){return{name:"",email:"",password:"",language:this.$store.state.system.info.defaultLanguage||"en",role:this.$user.role.name}},async open(){try{this.roles=await this.$api.roles.options({canBe:"created"}),"admin"!==this.$user.role.name&&(this.roles=this.roles.filter(t=>"admin"!==t.value))}catch(t){this.$store.dispatch("notification/error",t)}try{this.languages=await this.$api.translations.options()}catch(t){this.$store.dispatch("notification/error",t)}this.$refs.dialog.open()},reset(){this.user=this.emptyForm()}}},js=Es,Ts=Object(c["a"])(js,Cs,Ss,!1,null,null,null),Ls=Ts.exports,Is=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-form-dialog",{ref:"dialog",attrs:{fields:t.fields,"submit-button":t.$t("change")},on:{submit:t.submit},model:{value:t.user,callback:function(e){t.user=e},expression:"user"}})},As=[],Bs={mixins:[m],data(){return{user:{id:null,email:null}}},computed:{fields(){return{email:{label:this.$t("email"),preselect:!0,required:!0,type:"email"}}}},methods:{async open(t){try{this.user=await this.$api.users.get(t,{select:["id","email"]}),this.$refs.dialog.open()}catch(e){this.$store.dispatch("notification/error",e)}},async submit(){try{await this.$api.users.changeEmail(this.user.id,this.user.email),this.$store.dispatch("content/revert","users/"+this.user.id),this.$user.id===this.user.id&&this.$store.dispatch("user/email",this.user.email);let t={message:":)",event:"user.changeEmail"};this.success(t)}catch(t){this.$refs.dialog.error(t.message)}}}},Ds=Bs,Ms=Object(c["a"])(Ds,Is,As,!1,null,null,null),Ns=Ms.exports,Ps=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-form-dialog",{ref:"dialog",attrs:{fields:t.fields,"submit-button":t.$t("change")},on:{submit:t.submit},model:{value:t.user,callback:function(e){t.user=e},expression:"user"}})},Rs=[],qs={mixins:[m],data(){return{user:{language:"en"},languages:[]}},computed:{fields(){return{language:{label:this.$t("language"),type:"select",icon:"globe",options:this.languages,required:!0,empty:!1}}}},async created(){this.languages=await this.$api.translations.options()},methods:{async open(t){try{this.user=await this.$api.users.get(t,{view:"compact"}),this.$refs.dialog.open()}catch(e){this.$store.dispatch("notification/error",e)}},async submit(){try{this.user=await this.$api.users.changeLanguage(this.user.id,this.user.language),this.$user.id===this.user.id&&this.$store.dispatch("user/language",this.user.language),this.success({message:":)",event:"user.changeLanguage"})}catch(t){this.$refs.dialog.error(t.message)}}}},Fs=qs,Us=Object(c["a"])(Fs,Ps,Rs,!1,null,null,null),zs=Us.exports,Hs=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-form-dialog",{ref:"dialog",attrs:{fields:t.fields,"submit-button":t.$t("change")},on:{submit:t.submit},model:{value:t.values,callback:function(e){t.values=e},expression:"values"}})},Ks=[],Gs={mixins:[m],data(){return{user:null,values:{password:null,passwordConfirmation:null}}},computed:{fields(){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:{async open(t){try{this.user=await this.$api.users.get(t),this.$refs.dialog.open()}catch(e){this.$store.dispatch("notification/error",e)}},async submit(){if(!this.values.password||this.values.password.length<8)return this.$refs.dialog.error(this.$t("error.user.password.invalid")),!1;if(this.values.password!==this.values.passwordConfirmation)return this.$refs.dialog.error(this.$t("error.user.password.notSame")),!1;try{await this.$api.users.changePassword(this.user.id,this.values.password),this.success({message:":)",event:"user.changePassword"})}catch(t){this.$refs.dialog.error(t.message)}}}},Ys=Gs,Ws=Object(c["a"])(Ys,Hs,Ks,!1,null,null,null),Vs=Ws.exports,Js=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-remove-dialog",{ref:"dialog",attrs:{text:t.$t("user.delete.confirm",{email:t.user.email})},on:{submit:t.submit}})},Zs=[],Xs={mixins:[m],data(){return{user:{email:null}}},methods:{async open(t){try{this.user=await this.$api.users.get(t),this.$refs.dialog.open()}catch(e){this.$store.dispatch("notification/error",e)}},async submit(){try{await this.$api.users.delete(this.user.id),this.$store.dispatch("content/remove","users/"+this.user.id),this.success({message:":)",event:"user.delete"}),"User"===this.$route.name&&this.$go("/users")}catch(t){this.$refs.dialog.error(t.message)}}}},Qs=Xs,ti=Object(c["a"])(Qs,Js,Zs,!1,null,null,null),ei=ti.exports,si=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-form-dialog",{ref:"dialog",attrs:{fields:t.fields,"submit-button":t.$t("rename")},on:{submit:t.submit},model:{value:t.user,callback:function(e){t.user=e},expression:"user"}})},ii=[],ni={mixins:[m],data(){return{user:{id:null,name:null}}},computed:{fields(){return{name:{label:this.$t("name"),type:"text",icon:"user",preselect:!0}}}},methods:{async open(t){try{this.user=await this.$api.users.get(t,{select:["id","name"]}),this.$refs.dialog.open()}catch(e){this.$store.dispatch("notification/error",e)}},async submit(){this.user.name=this.user.name.trim();try{await this.$api.users.changeName(this.user.id,this.user.name),this.$user.id===this.user.id&&this.$store.dispatch("user/name",this.user.name),this.success({message:":)",event:"user.changeName"})}catch(t){this.$refs.dialog.error(t.message)}}}},ai=ni,ri=Object(c["a"])(ai,si,ii,!1,null,null,null),oi=ri.exports,li=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-form-dialog",{ref:"dialog",attrs:{fields:t.fields,"submit-button":t.$t("user.changeRole")},on:{submit:t.submit},model:{value:t.user,callback:function(e){t.user=e},expression:"user"}})},ci=[],ui={mixins:[m],data(){return{roles:[],user:{id:null,role:"visitor"}}},computed:{fields(){return{role:{label:this.$t("user.changeRole.select"),type:"radio",required:!0,options:this.roles}}}},methods:{async open(t){this.id=t;try{this.user=await this.$api.users.get(t),this.user.role=this.user.role.name,this.roles=await this.$api.users.roles(t),"admin"!==this.$user.role.name&&(this.roles=this.roles.filter(t=>"admin"!==t.value)),this.$refs.dialog.open()}catch(e){this.$store.dispatch("notification/error",e)}},async submit(){try{await this.$api.users.changeRole(this.user.id,this.user.role),this.$user.id===this.user.id&&this.$store.dispatch("user/load"),this.success({message:":)",event:"user.changeRole"})}catch(t){this.$refs.dialog.error(t.message)}}}},di=ui,pi=Object(c["a"])(di,li,ci,!1,null,null,null),hi=pi.exports,mi=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-dialog",{ref:"dialog",staticClass:"k-users-dialog",attrs:{size:"medium"},on:{cancel:function(e){return t.$emit("cancel")},submit:t.submit}},[t.issue?[s("k-box",{attrs:{text:t.issue,theme:"negative"}})]:[t.options.search?s("k-input",{staticClass:"k-dialog-search",attrs:{autofocus:!0,placeholder:t.$t("search")+" …",type:"text",icon:"search"},model:{value:t.search,callback:function(e){t.search=e},expression:"search"}}):t._e(),t.models.length?[s("k-list",t._l(t.models,(function(e){return s("k-list-item",{key:e.email,attrs:{text:e.text,info:e.info!==e.text?e.info:null,image:e.image,icon:e.icon},on:{click:function(s){return t.toggle(e)}}},[t.isSelected(e)?s("k-button",{attrs:{slot:"options",autofocus:!0,icon:t.checkedIcon,tooltip:t.$t("remove"),theme:"positive"},slot:"options"}):s("k-button",{attrs:{slot:"options",autofocus:!0,tooltip:t.$t("select"),icon:"circle-outline"},slot:"options"})],1)})),1),s("k-pagination",t._b({staticClass:"k-dialog-pagination",attrs:{details:!0,dropdown:!1,align:"center"},on:{paginate:t.paginate}},"k-pagination",t.pagination,!1))]:s("k-empty",{attrs:{icon:"users"}},[t._v(" "+t._s(t.$t("dialog.users.empty"))+" ")])]],2)},fi=[],gi={mixins:[Ft]},ki=gi,bi=(s("7568"),Object(c["a"])(ki,mi,fi,!1,null,null,null)),vi=bi.exports,$i=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-overlay",{ref:"overlay",attrs:{dimmed:!1},on:{close:t.onClose,open:t.onOpen}},[s("div",{staticClass:"k-drawer",attrs:{"data-nested":t.nested},on:{mousedown:function(e){t.click=!0},mouseup:t.mouseup}},[s("div",{staticClass:"k-drawer-box",on:{mousedown:function(e){e.stopPropagation(),t.click=!1}}},[s("header",{staticClass:"k-drawer-header"},[1===t.breadcrumb.length?s("h2",{staticClass:"k-drawer-title"},[s("k-icon",{attrs:{type:t.icon}}),t._v(" "+t._s(t.title)+" ")],1):s("ul",{staticClass:"k-drawer-breadcrumb"},t._l(t.breadcrumb,(function(e){return s("li",{key:e.id},[s("k-button",{attrs:{icon:e.icon},on:{click:function(s){return t.goTo(e.id)}}},[t._v(" "+t._s(e.title)+" ")])],1)})),0),t.hasTabs?s("nav",{staticClass:"k-drawer-tabs"},t._l(t.tabs,(function(e){return s("k-button",{key:e.name,staticClass:"k-drawer-tab",attrs:{current:t.tab==e.name},on:{click:function(s){return s.stopPropagation(),t.$emit("tab",e.name)}}},[t._v(" "+t._s(e.label)+" ")])})),1):t._e(),s("nav",{staticClass:"k-drawer-options"},[t._t("options"),s("k-button",{staticClass:"k-drawer-option",attrs:{icon:"check"},on:{click:t.close}})],2)]),s("div",{staticClass:"k-drawer-body"},[t._t("default")],2)])])])},yi=[],_i={inheritAttrs:!1,props:{icon:String,tab:String,tabs:Object,title:String},data(){return{click:!1}},computed:{breadcrumb(){return this.$store.state.drawers.open},hasTabs(){return this.tabs&&Object.keys(this.tabs).length>1},index(){return this.breadcrumb.findIndex(t=>t.id===this._uid)},nested(){return this.index>0}},watch:{index(){-1===this.index&&this.close()}},methods:{close(){this.$refs.overlay.close()},goTo(t){if(t===this._uid)return!0;this.$store.dispatch("drawers/goto",t)},mouseup(){!0===this.click&&this.close(),this.click=!1},onClose(){this.$store.dispatch("drawers/close",this._uid),this.$emit("close")},onOpen(){this.$store.dispatch("drawers/open",{id:this._uid,icon:this.icon,title:this.title}),this.$emit("open")},open(){this.$refs.overlay.open()}}},wi=_i,xi=(s("5332"),Object(c["a"])(wi,$i,yi,!1,null,null,null)),Oi=xi.exports,Ci=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-drawer",{ref:"drawer",staticClass:"k-form-drawer",attrs:{icon:t.icon,tabs:t.tabs,tab:t.tab,title:t.title},on:{close:function(e){return t.$emit("close")},open:function(e){return t.$emit("open")},tab:function(e){t.tab=e}},scopedSlots:t._u([{key:"options",fn:function(){return[t._t("options")]},proxy:!0},{key:"default",fn:function(){return[0===Object.keys(t.fields).length?s("k-box",{attrs:{theme:"info"}},[t._v(" "+t._s(t.empty)+" ")]):s("k-form",{ref:"form",attrs:{autofocus:!0,fields:t.fields,value:t.$helper.clone(t.value)},on:{input:function(e){return t.$emit("input",e)}}})]},proxy:!0}],null,!0)})},Si=[],Ei={inheritAttrs:!1,props:{empty:{type:String,default(){return"Missing field setup"}},icon:String,tabs:Object,title:String,type:String,value:Object},data(){return{tab:null}},computed:{fields(){const t=this.tab||null,e=this.tabs,s=e[t]||this.firstTab,i=s.fields||{};return i},firstTab(){return Object.values(this.tabs)[0]}},methods:{close(){this.$refs.drawer.close()},focus(){this.$refs.form&&"function"===typeof this.$refs.form.focus&&this.$refs.form.focus()},open(t,e=!0){this.$refs.drawer.open(),this.tab=t||this.firstTab.name,!1!==e&&setTimeout(()=>{this.focus()},1)}}},ji=Ei,Ti=Object(c["a"])(ji,Ci,Si,!1,null,null,null),Li=Ti.exports,Ii=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-dropdown",{staticClass:"k-autocomplete"},[t._t("default"),s("k-dropdown-content",t._g({ref:"dropdown",attrs:{autofocus:!0}},t.$listeners),t._l(t.matches,(function(e,i){return s("k-dropdown-item",t._b({key:i,on:{mousedown:function(s){return t.onSelect(e)},keydown:[function(s){return!s.type.indexOf("key")&&t._k(s.keyCode,"tab",9,s.key,"Tab")?null:(s.preventDefault(),t.onSelect(e))},function(s){return!s.type.indexOf("key")&&t._k(s.keyCode,"enter",13,s.key,"Enter")?null:(s.preventDefault(),t.onSelect(e))},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"left",37,e.key,["Left","ArrowLeft"])||"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(" "+t._s(e.text)+" ")])})),1),t._v(" "+t._s(t.query)+" ")],2)},Ai=[],Bi={props:{limit:{type:Number,default:10},skip:{type:Array,default(){return[]}},options:Array,query:String},data(){return{matches:[],selected:{text:null}}},methods:{close(){this.$refs.dropdown.close()},onSelect(t){this.$refs.dropdown.close(),this.$emit("select",t)},search(t){if(t.length<1)return;const e=new RegExp(RegExp.escape(t),"ig");this.matches=this.options.filter(t=>!!t.text&&(-1===this.skip.indexOf(t.value)&&null!==t.text.match(e))).slice(0,this.limit),this.$emit("search",t,this.matches),this.$refs.dropdown.open()}}},Di=Bi,Mi=Object(c["a"])(Di,Ii,Ai,!1,null,null,null),Ni=Mi.exports,Pi=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",{staticClass:"k-calendar-input"},[s("nav",[s("k-button",{attrs:{icon:"angle-left"},on:{click:t.prev}}),s("span",{staticClass:"k-calendar-selects"},[s("k-select-input",{attrs:{options:t.months,disabled:t.disabled,required:!0},model:{value:t.view.month,callback:function(e){t.$set(t.view,"month",t._n(e))},expression:"view.month"}}),s("k-select-input",{attrs:{options:t.years,disabled:t.disabled,required:!0},model:{value:t.view.year,callback:function(e){t.$set(t.view,"year",t._n(e))},expression:"view.year"}})],1),s("k-button",{attrs:{icon:"angle-right"},on:{click:t.next}})],1),s("table",{staticClass:"k-calendar-table"},[s("thead",[s("tr",t._l(t.weekdays,(function(e){return s("th",{key:"weekday_"+e},[t._v(" "+t._s(e)+" ")])})),0)]),s("tbody",t._l(t.numberOfWeeks,(function(e){return s("tr",{key:"week_"+e},t._l(t.days(e),(function(e,i){return s("td",{key:"day_"+i,staticClass:"k-calendar-day",attrs:{"aria-current":!!t.isToday(e)&&"date","aria-selected":!!t.isSelected(e)&&"date","data-between":t.isBetween(e),"data-first":t.isFirst(e),"data-last":t.isLast(e)}},[e?s("k-button",{attrs:{disabled:t.isDisabled(e)},on:{click:function(s){return t.select(e)}}},[t._v(" "+t._s(e)+" ")]):t._e()],1)})),0)})),0),s("tfoot",[s("tr",[s("td",{staticClass:"k-calendar-today",attrs:{colspan:"7"}},[s("k-button",{on:{click:function(e){return t.select("today")}}},[t._v(" "+t._s(t.$t("today"))+" ")])],1)])])])])},Ri=[],qi={props:{disabled:Boolean,multiple:Boolean,max:String,min:String,value:[Array,String]},data(){return this.toData(this.value)},computed:{numberOfDays(){return this.viewDt.daysInMonth()},numberOfWeeks(){return Math.ceil((this.numberOfDays+this.firstWeekday-1)/7)},firstWeekday(){const t=this.viewDt.day();return t>0?t:7},weekdays(){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(){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(){var t=[];return this.monthnames.forEach((e,s)=>{const i=this.toDate(1,s);t.push({value:s,text:e,disabled:i.isBefore(this.view.min,"month")||i.isAfter(this.view.max,"month")})}),t},years(){var t=[];const e=this.view.min?this.view.min.get("year"):this.view.year-20,s=this.view.max?this.view.max.get("year"):this.view.year+20;for(var i=e;i<=s;i++)t.push({value:i,text:this.$helper.pad(i)});return t},viewDt(){const t=`${this.view.year}-${this.view.month+1}-01 00:00:00`;return this.$library.dayjs.utc(t)}},watch:{value(t){const e=this.toData(t);this.datetimes=e.datetimes,this.view=e.view}},methods:{days(t){let e=[];const s=7*(t-1)+1;for(let i=s;ithis.numberOfDays?e.push(""):e.push(t)}return e},isBetween(t){if(""===t||0==this.multiple||this.datetimes.length<2)return!1;const e=this.toDate(t);return this.isFirst(t)||this.isLast(t)||e.isAfter(this.datetimes[0],"day")&&e.isBefore(this.datetimes[1],"day")},isDisabled(t){const e=this.toDate(t);return e.isBefore(this.view.min,"day")||e.isAfter(this.view.max,"day")},isFirst(t){if(""===t||0==this.multiple||this.datetimes.length<2)return!1;const e=this.toDate(t);return e.isSame(this.datetimes[0],"day")},isLast(t){if(""===t||0==this.multiple||this.datetimes.length<2)return!1;const e=this.toDate(t);return e.isSame(this.datetimes[1],"day")},isSelected(t){if(""===t)return!1;const e=this.toDate(t);return this.datetimes.some(t=>e.isSame(t,"day"))},isToday(t){return this.toDate(t).isSame(this.$library.dayjs.utc(),"day")},next(){let t=this.viewDt.clone().add(1,"month");this.show(t)},prev(){let t=this.viewDt.clone().subtract(1,"month");this.show(t)},mergeTime(t,e){return t.clone().set("second",e.get("second")).set("minute",e.get("minute")).set("hour",e.get("hour"))},select(t){if("today"===t){const t=this.$library.dayjs();this.datetimes=[t],this.show(t)}else{const e=this.datetimes[0]||this.toToday();let s=this.toDate(t);s=this.mergeTime(s,e),!1===this.multiple||0===this.datetimes.length||2===this.datetimes.length||s.isBefore(this.datetimes[0])?this.datetimes=[s]:this.datetimes.push(s)}this.multiple?this.$emit("input",this.datetimes.map(t=>this.toISO(t))):this.$emit("input",this.toISO(this.datetimes[0]))},show(t){this.view.year=t.year(),this.view.month=t.month()},toData(t){const e=this.toToday(),s=this.toDatetimes(t);return{datetimes:s,view:{month:(s[0]||e).month(),year:(s[0]||e).year(),min:this.min?this.$library.dayjs.utc(this.min):null,max:this.max?this.$library.dayjs.utc(this.max):null}}},toDate(t,e=this.view.month,s=this.view.year){return this.$library.dayjs.utc(`${s}-${e+1}-${t} 00:00:00`)},toDatetimes(t){return t?"string"===typeof t?[this.$library.dayjs.utc(t)]:t.map(t=>this.$library.dayjs.utc(t)):[]},toISO(t){return t.format("YYYY-MM-DD HH:mm:ss")},toToday(){return this.$library.dayjs.utc()}}},Fi=qi,Ui=(s("ee15"),Object(c["a"])(Fi,Pi,Ri,!1,null,null,null)),zi=Ui.exports,Hi=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("span",{staticClass:"k-counter",attrs:{"data-invalid":!t.valid}},[s("span",[t._v(t._s(t.count))]),t.min&&t.max?s("span",{staticClass:"k-counter-rules"},[t._v("("+t._s(t.min)+"–"+t._s(t.max)+")")]):t.min?s("span",{staticClass:"k-counter-rules"},[t._v("≥ "+t._s(t.min))]):t.max?s("span",{staticClass:"k-counter-rules"},[t._v("≤ "+t._s(t.max))]):t._e()])},Ki=[],Gi={props:{count:Number,min:Number,max:Number,required:{type:Boolean,default:!1}},computed:{valid(){return!1===this.required&&0===this.count||(!0!==this.required||0!==this.count)&&(!(this.min&&this.countthis.max))}}},Yi=Gi,Wi=(s("fc0f"),Object(c["a"])(Yi,Hi,Ki,!1,null,null,null)),Vi=Wi.exports,Ji=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("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",[s("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"),s("input",{ref:"submitter",staticClass:"k-form-submitter",attrs:{type:"submit"}})],2)},Zi=[],Xi={props:{disabled:Boolean,config:Object,fields:{type:[Array,Object],default(){return{}}},novalidate:{type:Boolean,default:!1},value:{type:Object,default(){return{}}}},data(){return{errors:{},listeners:{...this.$listeners,submit:this.onSubmit}}},methods:{focus(t){this.$refs.fields&&this.$refs.fields.focus&&this.$refs.fields.focus(t)},onSubmit(){this.$emit("submit",this.value)},submit(){this.$refs.submitter.click()}}},Qi=Xi,tn=(s("5d33"),Object(c["a"])(Qi,Ji,Zi,!1,null,null,null)),en=tn.exports,sn=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("nav",{staticClass:"k-form-buttons",attrs:{"data-theme":t.mode}},["unlock"===t.mode?s("k-view",[s("p",{staticClass:"k-form-lock-info"},[t._v(" "+t._s(t.$t("lock.isUnlocked"))+" ")]),s("span",{staticClass:"k-form-lock-buttons"},[s("k-button",{staticClass:"k-form-button",attrs:{icon:"download"},on:{click:t.onDownload}},[t._v(" "+t._s(t.$t("download"))+" ")]),s("k-button",{staticClass:"k-form-button",attrs:{icon:"check"},on:{click:t.onResolve}},[t._v(" "+t._s(t.$t("confirm"))+" ")])],1)]):"lock"===t.mode?s("k-view",[s("p",{staticClass:"k-form-lock-info"},[s("k-icon",{attrs:{type:"lock"}}),s("span",{domProps:{innerHTML:t._s(t.$t("lock.isLocked",{email:t.form.lock.email}))}})],1),t.form.lock.unlockable?s("k-button",{staticClass:"k-form-button",attrs:{icon:"unlock"},on:{click:t.setUnlock}},[t._v(" "+t._s(t.$t("lock.unlock"))+" ")]):s("k-icon",{staticClass:"k-form-lock-loader",attrs:{type:"loader"}})],1):"changes"===t.mode?s("k-view",[s("k-button",{staticClass:"k-form-button",attrs:{disabled:t.isDisabled,icon:"undo"},on:{click:function(e){return t.$refs.revert.open()}}},[t._v(" "+t._s(t.$t("revert"))+" ")]),s("k-button",{staticClass:"k-form-button",attrs:{disabled:t.isDisabled,icon:"check"},on:{click:t.onSave}},[t._v(" "+t._s(t.$t("save"))+" ")])],1):t._e(),s("k-dialog",{ref:"revert",attrs:{"submit-button":t.$t("revert"),icon:"undo",theme:"negative"},on:{submit:t.onRevert}},[s("k-text",{domProps:{innerHTML:t._s(t.$t("revert.confirm"))}})],1)],1)},nn=[],an={data(){return{supportsLocking:!0}},computed:{api(){return{lock:[this.$route.path+"/lock",null,null,!0],unlock:[this.$route.path+"/unlock",null,null,!0]}},hasChanges(){return this.$store.getters["content/hasChanges"]()},form(){return{lock:this.$store.state.content.status.lock,unlock:this.$store.state.content.status.unlock}},id(){return this.$store.state.content.current},isDisabled(){return!1===this.$store.state.content.status.enabled},isLocked(){return null!==this.form.lock},isUnlocked(){return null!==this.form.unlock},mode(){return!0===this.isUnlocked?"unlock":!0===this.isLocked?"lock":!0===this.hasChanges?"changes":null}},watch:{hasChanges(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(){this.id&&!1===this.hasChanges&&this.$store.dispatch("heartbeat/add",[this.getLock,10])}},created(){this.$events.$on("keydown.cmd.s",this.onSave)},destroyed(){this.$events.$off("keydown.cmd.s",this.onSave)},methods:{getLock(){return this.$api.get(...this.api.lock).then(t=>{if(!1===t.supported)return this.supportsLocking=!1,void this.$store.dispatch("heartbeat/remove",this.getLock);!1===t.locked?(this.isLocked&&this.form.lock.user!==this.$store.state.user.current.id&&this.$events.$emit("model.reload"),this.$store.dispatch("content/lock",null)):this.$store.dispatch("content/lock",t.locked)}).catch(()=>{})},setLock(){!0===this.supportsLocking&&this.$api.patch(...this.api.lock).catch(t=>{if("error.lock.notImplemented"===t.key)return this.supportsLocking=!1,this.$store.dispatch("heartbeat/remove",this.setLock),!1;this.$store.dispatch("content/revert",this.id),this.$store.dispatch("heartbeat/remove",this.setLock),this.$store.dispatch("heartbeat/add",[this.getLock,10])})},removeLock(){!0===this.supportsLocking&&(this.$store.dispatch("heartbeat/remove",this.setLock),this.$api.delete(...this.api.lock).then(()=>{this.$store.dispatch("content/lock",null),this.$store.dispatch("heartbeat/add",[this.getLock,10])}).catch(()=>{}))},setUnlock(){!0===this.supportsLocking&&(this.$store.dispatch("heartbeat/remove",this.setLock),this.$api.patch(...this.api.unlock).then(()=>{this.$store.dispatch("content/lock",null),this.$store.dispatch("heartbeat/add",[this.getLock,10])}).catch(()=>{}))},removeUnlock(){!0===this.supportsLocking&&(this.$store.dispatch("heartbeat/remove",this.setLock),this.$api.delete(...this.api.unlock).then(()=>{this.$store.dispatch("content/unlock",null),this.$store.dispatch("heartbeat/add",[this.getLock,10])}).catch(()=>{}))},onDownload(){let t="";Object.keys(this.form.unlock).forEach(e=>{t+=e+": \n\n"+this.form.unlock[e],t+="\n\n----\n\n"});let e=document.createElement("a");e.setAttribute("href","data:text/plain;charset=utf-8,"+encodeURIComponent(t)),e.setAttribute("download",this.id+".txt"),e.style.display="none",document.body.appendChild(e),e.click(),document.body.removeChild(e)},onResolve(){this.$store.dispatch("content/revert"),this.removeUnlock()},onRevert(){this.$store.dispatch("content/revert"),this.$refs.revert.close()},onSave(t){return!!t&&(t.preventDefault&&t.preventDefault(),!1===this.hasChanges||void this.$store.dispatch("content/save").then(()=>{this.$events.$emit("model.update"),this.$store.dispatch("notification/success",":)")}).catch(t=>{403!==t.code&&(t.details&&Object.keys(t.details).length>0?this.$store.dispatch("notification/error",{message:this.$t("error.form.incomplete"),details:t.details}):this.$store.dispatch("notification/error",{message:this.$t("error.form.notSaved"),details:[{label:"Exception: "+t.exception,message:t.message}]}))}))}}},rn=an,on=(s("18dd"),Object(c["a"])(rn,sn,nn,!1,null,null,null)),ln=on.exports,cn=function(){var t=this,e=t.$createElement,s=t._self._c||e;return t.hasChanges?s("k-dropdown",{staticClass:"k-form-indicator"},[s("k-button",{staticClass:"k-topbar-button",on:{click:t.toggle}},[s("k-icon",{staticClass:"k-form-indicator-icon",attrs:{type:"edit"}})],1),s("k-dropdown-content",{ref:"list",attrs:{align:"right"}},[s("p",{staticClass:"k-form-indicator-info"},[t._v(" "+t._s(t.$t("lock.unsaved"))+": ")]),s("hr"),t._l(t.entries,(function(e){return s("k-dropdown-item",{key:e.id,attrs:{icon:e.icon},nativeOn:{click:function(s){return s.stopPropagation(),t.go(e.target)}}},[t._v(" "+t._s(e.label)+" ")])}))],2)],1):t._e()},un=[],dn={data(){return{isOpen:!1,entries:[]}},computed:{store(){return this.$store.state.content.models},models(){const t=Object.keys(this.store).filter(t=>!!this.store[t]);let e=t.map(t=>({id:t,...this.store[t]}));return e.filter(t=>Object.keys(t.changes).length>0)},hasChanges(){return this.models.length>0}},methods:{go(t){if(t.language&&this.$store.state.languages.current.code!==t.language){const e=this.$store.state.languages.all.filter(e=>e.code===t.language)[0];this.$store.dispatch("languages/current",e)}this.$go(t.link)},load(){const t=this.models.map(t=>this.$api.get(t.api,{view:"compact"},null,!0).then(e=>{let s;if(s=!0===t.id.startsWith("pages/")?{icon:"page",label:e.title,target:{link:this.$api.pages.link(e.id)}}:!0===t.id.startsWith("files/")?{icon:"image",label:e.filename,target:{link:e.link}}:!0===t.id.startsWith("users/")?{icon:"user",label:e.email,target:{link:this.$api.users.link(e.id)}}:{icon:"home",label:e.title,target:{link:"/site"}},this.$store.state.languages.current){const e=t.id.split("/").pop();s.label=s.label+" ("+e+")",s.target.language=e}return s}).catch(()=>(this.$store.dispatch("content/remove",t.id),null)));return Promise.all(t).then(t=>{this.entries=t.filter(t=>null!==t),0===this.entries.length&&this.$store.dispatch("notification/success",this.$t("lock.unsaved.empty"))})},toggle(){!1===this.$refs.list.isOpen?this.load().then(()=>{this.$refs.list&&this.$refs.list.toggle()}):this.$refs.list.toggle()}}},pn=dn,hn=(s("9e26"),Object(c["a"])(pn,cn,un,!1,null,null,null)),mn=hn.exports,fn=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",{class:"k-field k-field-name-"+t.name,attrs:{"data-disabled":t.disabled,"data-translate":t.translate},on:{focusin:function(e){return t.$emit("focus",e)},focusout:function(e){return t.$emit("blur",e)}}},[t._t("header",[s("header",{staticClass:"k-field-header"},[t._t("label",[s("label",{staticClass:"k-field-label",attrs:{for:t.input}},[t._v(t._s(t.labelText)+" "),t.required?s("abbr",{attrs:{title:t.$t("field.required")}},[t._v("*")]):t._e()])]),t._t("options"),t._t("counter",[t.counter?s("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?s("footer",{staticClass:"k-field-footer"},[t._t("help",[t.help?s("k-text",{staticClass:"k-field-help",attrs:{theme:"help"},domProps:{innerHTML:t._s(t.help)}}):t._e()])],2):t._e()])],2)},gn=[],kn={inheritAttrs:!1,props:{counter:[Boolean,Object],disabled:Boolean,endpoints:Object,help:String,input:[String,Number],label:String,name:[String,Number],required:Boolean,translate:Boolean,type:String},computed:{labelText(){return this.label||" "}}},bn=kn,vn=(s("a134"),Object(c["a"])(bn,fn,gn,!1,null,null,null)),$n=vn.exports,yn=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("fieldset",{staticClass:"k-fieldset"},[s("k-grid",[t._l(t.fields,(function(e,i){return["hidden"!==e.type&&t.meetsCondition(e)?s("k-column",{key:e.signature,attrs:{width:e.width}},[s("k-error-boundary",[t.hasFieldType(e.type)?s("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(s){return t.$emit("input",t.value,e,i)},focus:function(s){return t.$emit("focus",s,e,i)},invalid:function(s,n){return t.onInvalid(s,n,e,i)},submit:function(s){return t.$emit("submit",s,e,i)}},model:{value:t.value[i],callback:function(e){t.$set(t.value,i,e)},expression:"value[fieldName]"}},"component",e,!1)):s("k-box",{attrs:{theme:"negative"}},[s("k-text",{attrs:{size:"small"}},[t._v(" The field type "),s("strong",[t._v('"'+t._s(i)+'"')]),t._v(" does not exist ")])],1)],1)],1):t._e()]}))],2)],1)},_n=[],wn={props:{config:Object,disabled:Boolean,fields:{type:[Array,Object],default(){return[]}},novalidate:{type:Boolean,default:!1},value:{type:Object,default(){return{}}}},data(){return{errors:{}}},methods:{focus(t){if(t)return void(this.hasField(t)&&"function"===typeof this.$refs[t][0].focus&&this.$refs[t][0].focus());const e=Object.keys(this.$refs)[0];this.focus(e)},hasFieldType(t){return this.$helper.isComponent(`k-${t}-field`)},hasField(t){return this.$refs[t]&&this.$refs[t][0]},meetsCondition(t){if(!t.when)return!0;let e=!0;return Object.keys(t.when).forEach(s=>{const i=this.value[s.toLowerCase()],n=t.when[s];i!==n&&(e=!1)}),e},onInvalid(t,e,s,i){this.errors[i]=e,this.$emit("invalid",this.errors)},hasErrors(){return Object.keys(this.errors).length}}},xn=wn,On=(s("862b"),Object(c["a"])(xn,yn,_n,!1,null,null,null)),Cn=On.exports,Sn=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("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?s("span",{staticClass:"k-input-before",on:{click:t.focus}},[t._t("before",[t._v(t._s(t.before))])],2):t._e(),s("span",{staticClass:"k-input-element",on:{click:function(e){return e.stopPropagation(),t.focus(e)}}},[t._t("default",[s("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?s("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?s("span",{staticClass:"k-input-icon",on:{click:t.focus}},[t._t("icon",[s("k-icon",{attrs:{type:t.icon}})])],2):t._e()])},En=[],jn={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(){return{isInvalid:this.invalid,listeners:{...this.$listeners,invalid:(t,e)=>{this.isInvalid=t,this.$emit("invalid",t,e)}}}},computed:{inputProps(){return{...this.$props,...this.$attrs}}},methods:{blur(t){t&&t.relatedTarget&&!1===this.$el.contains(t.relatedTarget)&&this.trigger(null,"blur")},focus(t){this.trigger(t,"focus")},select(t){this.trigger(t,"select")},trigger(t,e){if(t&&t.target&&"INPUT"===t.target.tagName&&"function"===typeof t.target[e])return void t.target[e]();if(this.$refs.input&&"function"===typeof this.$refs.input[e])return void this.$refs.input[e]();const s=this.$el.querySelector("input, select, textarea");s&&"function"===typeof s[e]&&s[e]()}}},Tn=jn,Ln=(s("c7c8"),Object(c["a"])(Tn,Sn,En,!1,null,null,null)),In=Ln.exports,An=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("form",{staticClass:"k-login-form",on:{submit:function(e){return e.preventDefault(),t.login(e)}}},[s("h1",{staticClass:"k-offscreen"},[t._v(" "+t._s(t.$t("login"))+" ")]),t.issue?s("div",{staticClass:"k-login-alert",on:{click:function(e){t.issue=null}}},[s("span",[t._v(t._s(t.issue))]),s("k-icon",{attrs:{type:"alert"}})],1):t._e(),s("div",{staticClass:"k-login-fields"},[!0===t.canToggle?s("button",{staticClass:"k-login-toggler",attrs:{type:"button"},on:{click:t.toggleForm}},[t._v(" "+t._s(t.toggleText)+" ")]):t._e(),s("k-fieldset",{ref:"fieldset",attrs:{novalidate:!0,fields:t.fields},model:{value:t.user,callback:function(e){t.user=e},expression:"user"}})],1),s("div",{staticClass:"k-login-buttons"},[!1===t.isResetForm?s("span",{staticClass:"k-login-checkbox"},[s("k-checkbox-input",{attrs:{value:t.user.remember,label:t.$t("login.remember")},on:{input:function(e){t.user.remember=e}}})],1):t._e(),s("k-button",{staticClass:"k-login-button",attrs:{icon:"check",type:"submit"}},[t._v(" "+t._s(t.$t("login"+(t.isResetForm?".reset":"")))+" "),t.isLoading?[t._v(" … ")]:t._e()],2)],1)])},Bn=[],Dn={data(){return{currentForm:null,isLoading:!1,issue:"",user:{email:"",password:"",remember:!1}}},computed:{canToggle(){let t=this.$store.state.system.info.loginMethods;return null!==this.codeMode&&!0===t.includes("password")&&(!0===t.includes("password-reset")||!0===t.includes("code"))},codeMode(){let t=this.$store.state.system.info.loginMethods;return!0===t.includes("password-reset")?"password-reset":!0===t.includes("code")?"code":null},fields(){let t={email:{autofocus:!0,label:this.$t("email"),type:"email",required:!0,link:!1}};return"email-password"===this.form&&(t.password={label:this.$t("password"),type:"password",minLength:8,required:!0,autocomplete:"current-password",counter:!1}),t},form(){return this.currentForm?this.currentForm:"password"===this.$store.state.system.info.loginMethods[0]?"email-password":"email"},isResetForm(){return"password-reset"===this.codeMode&&"email"===this.form},toggleText(){return this.$t("login.toggleText."+this.codeMode+"."+this.formOpposite(this.form))}},methods:{formOpposite(t){return"email-password"===t?"email":"email-password"},async login(){this.issue=null,this.isLoading=!0;let t=Object.assign({},this.user);"email"===this.currentForm&&(t.password=null),!0===this.isResetForm&&(t.remember=!1);try{const e=await this.$api.auth.login(t);e.challenge?this.$store.dispatch("user/pending",{email:t.email,challenge:e.challenge}):(this.$store.dispatch("user/login",e.user),await this.$store.dispatch("system/load",!0),this.$store.dispatch("notification/success",this.$t("welcome")))}catch(e){this.issue=e.message}finally{this.isLoading=!1}},toggleForm(){this.currentForm=this.formOpposite(this.form),this.$refs.fieldset.focus("email")}}},Mn=Dn,Nn=Object(c["a"])(Mn,An,Bn,!1,null,null,null),Pn=Nn.exports,Rn=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("form",{staticClass:"k-login-form k-login-code-form",on:{submit:function(e){return e.preventDefault(),t.login(e)}}},[s("h1",{staticClass:"k-offscreen"},[t._v(" "+t._s(t.$t("login"))+" ")]),t.issue?s("div",{staticClass:"k-login-alert",on:{click:function(e){t.issue=null}}},[s("span",[t._v(t._s(t.issue))]),s("k-icon",{attrs:{type:"alert"}})],1):t._e(),s("k-user-info",{attrs:{user:t.$store.state.user.pendingEmail}}),s("k-text-field",{attrs:{autofocus:!0,counter:!1,help:t.$t("login.code.text."+t.$store.state.user.pendingChallenge),label:t.$t("login.code.label."+t.mode),novalidate:!0,placeholder:t.$t("login.code.placeholder."+t.$store.state.user.pendingChallenge),required:!0,autocomplete:"one-time-code",icon:"unlock",name:"code"},model:{value:t.code,callback:function(e){t.code=e},expression:"code"}}),s("div",{staticClass:"k-login-buttons"},[s("k-button",{staticClass:"k-login-button k-login-back-button",attrs:{icon:"angle-left"},on:{click:t.back}},[t._v(" "+t._s(t.$t("back"))+" "),t.isLoadingBack?[t._v(" … ")]:t._e()],2),s("k-button",{staticClass:"k-login-button",attrs:{icon:"check",type:"submit"}},[t._v(" "+t._s(t.$t("login"+("password-reset"===t.mode?".reset":"")))+" "),t.isLoadingLogin?[t._v(" … ")]:t._e()],2)],1)],1)},qn=[],Fn={data(){return{code:"",isLoadingBack:!1,isLoadingLogin:!1,issue:""}},computed:{mode(){return!0===this.$store.state.system.info.loginMethods.includes("password-reset")?"password-reset":"login"}},methods:{async back(){this.isLoadingBack=!0,await this.$store.dispatch("user/logout"),this.isLoadingBack=!1},async login(){this.issue=null,this.isLoadingLogin=!0;try{const t=await this.$api.auth.verifyCode(this.code);"password-reset"===this.mode&&this.$store.dispatch("user/visit","/reset-password"),this.$store.dispatch("user/login",t.user),await this.$store.dispatch("system/load",!0),this.$store.dispatch("notification/success",this.$t("welcome"))}catch(t){this.issue=t.message}finally{this.isLoadingLogin=!1}}}},Un=Fn,zn=(s("e1f3"),Object(c["a"])(Un,Rn,qn,!1,null,null,null)),Hn=zn.exports,Kn=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",{staticClass:"k-upload"},[s("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()}}}),s("k-dialog",{ref:"dialog",attrs:{"cancel-button":!1,"submit-button":!1,size:"medium"}},[t.errors.length>0?[s("k-headline",[t._v(t._s(t.$t("upload.errors")))]),s("ul",{staticClass:"k-upload-error-list"},t._l(t.errors,(function(e,i){return s("li",{key:"error-"+i},[s("p",{staticClass:"k-upload-error-filename"},[t._v(" "+t._s(e.file.name)+" ")]),s("p",{staticClass:"k-upload-error-message"},[t._v(" "+t._s(e.message)+" ")])])})),0)]:[s("k-headline",[t._v(t._s(t.$t("upload.progress")))]),s("ul",{staticClass:"k-upload-list"},t._l(t.files,(function(e,i){return s("li",{key:"file-"+i},[s("k-progress",{ref:e.name,refInFor:!0}),s("p",{staticClass:"k-upload-list-filename"},[t._v(" "+t._s(e.name)+" ")]),s("p",[t._v(t._s(t.errors[e.name]))])],1)})),0)],s("template",{slot:"footer"},[t.errors.length>0?[s("k-button-group",[s("k-button",{attrs:{icon:"check"},on:{click:function(e){return t.$refs.dialog.close()}}},[t._v(" "+t._s(t.$t("confirm"))+" ")])],1)]:t._e()],2)],2)],1)},Gn=[],Yn={props:{url:{type:String},accept:{type:String,default:"*"},attributes:{type:Object},multiple:{type:Boolean,default:!0},max:{type:Number}},data(){return{options:this.$props,completed:{},errors:[],files:[],total:0}},methods:{open(t){this.params(t),setTimeout(()=>{this.$refs.input.click()},1)},params(t){this.options=Object.assign({},this.$props,t)},select(t){this.upload(t.target.files)},drop(t,e){this.params(e),this.upload(t)},upload(t){this.$refs.dialog.open(),this.files=[...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(t=>{this.$helper.upload(t,{url:this.options.url,attributes:this.options.attributes,headers:{"X-CSRF":window.panel.csrf},progress:(t,e,s)=>{this.$refs[e.name]&&this.$refs[e.name][0]&&this.$refs[e.name][0].set(s)},success:(t,e,s)=>{this.complete(e,s.data)},error:(t,e,s)=>{this.errors.push({file:e,message:s.message}),this.complete(e,s.data)}})})},complete(t,e){if(this.completed[t.name]=e,Object.keys(this.completed).length==this.total){if(this.$refs.input.value="",this.errors.length>0)return this.$forceUpdate(),void this.$emit("error",this.files);setTimeout(()=>{this.$refs.dialog.close(),this.$emit("success",this.files,Object.values(this.completed))},250)}}}},Wn=Yn,Vn=(s("5aee"),Object(c["a"])(Wn,Kn,Gn,!1,null,null,null)),Jn=Vn.exports,Zn=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",{ref:"editor",staticClass:"k-writer",attrs:{"data-empty":t.isEmpty,"data-placeholder":t.placeholder,spellcheck:t.spellcheck}},[t.editor?[t.toolbar.visible?s("k-writer-toolbar",{ref:"toolbar",style:{bottom:t.toolbar.position.bottom+"px",left:t.toolbar.position.left+"px"},attrs:{editor:t.editor,"active-marks":t.toolbar.marks,"active-nodes":t.toolbar.nodes},on:{command:function(e){return t.editor.command(e)}}}):t._e(),s("k-writer-link-dialog",{ref:"linkDialog",on:{close:function(e){return t.editor.focus()},submit:function(e){return t.editor.command("toggleLink",e)}}})]:t._e()],2)},Xn=[],Qn=(s("13d5"),s("bf19"),s("5313")),ta=s("576a"),ea=s("304a"),sa=s("7f06"),ia=s("0010"),na=s("f95e"),aa=s("665f");function ra(t,e){const{from:s,to:i}=t.selection;let n=[];t.doc.nodesBetween(s,i,t=>{n=[...n,...t.marks]});const a=n.find(t=>t.type.name===e.name);return a?a.attrs:{}}function oa(t,e,s){let i=[];return s.doc.nodesBetween(t,e,(t,e)=>{i=[...i,...t.marks.map(s=>({start:e,end:e+t.nodeSize,mark:s}))]}),i}var la=function(t,e,s){return new na["a"](t,(t,i,n,a)=>{const r=s instanceof Function?s(i):s,{tr:o}=t,l=i.length-1;let c=a,u=n;if(i[l]){const s=n+i[0].indexOf(i[l-1]),r=s+i[l-1].length-1,d=s+i[l-1].lastIndexOf(i[l]),p=d+i[l].length,h=oa(n,a,t).filter(t=>{const{excluded:s}=t.mark.type;return s.find(t=>t.name===e.name)}).filter(t=>t.end>s);if(h.length)return!1;ps&&o.delete(s,d),u=s,c=u+i[l].length}return o.addMark(u,c,e.create(r)),o.removeStoredMark(e),o})};function ca(t,e){const{from:s,$from:i,to:n,empty:a}=t.selection;return a?!!e.isInSet(t.storedMarks||i.marks()):!!t.doc.rangeHasMark(s,n,e)}var ua=function(t,e,s){const i=(n,a)=>{const r=[];return n.forEach(n=>{if(n.isText){const{text:i,marks:o}=n;let l,c=0;const u=!!o.filter(t=>"link"===t.type.name)[0];while(!u&&null!==(l=t.exec(i)))if(a&&a.type.allowsMarkType(e)&&l[1]){const t=l.index,i=t+l[0].length,a=t+l[0].indexOf(l[1]),o=a+l[1].length,u=s instanceof Function?s(l):s;t>0&&r.push(n.cut(c,t)),r.push(n.cut(a,o).mark(e.create(u).addToSet(n.marks))),c=i}cnew ea["j"](i(t.content),t.openStart,t.openEnd)}})};function da(t=0,e=0,s=0){return Math.min(Math.max(parseInt(t,10),e),s)}var pa=function(t,e,s){return new na["a"](t,(t,i,n,a)=>{const r=s instanceof Function?s(i):s,{tr:o}=t;return i[0]&&o.replaceWith(n-1,a,e.create(r)),o})},ha=(t,e)=>{for(let s=t.depth;s>0;s--){const i=t.node(s);if(e(i))return{pos:s>0?t.before(s):0,start:t.start(s),depth:s,node:i}}},ma=t=>({$from:e})=>ha(e,t),fa=t=>t instanceof Qn["c"],ga=(t,e)=>Array.isArray(t)&&t.indexOf(e.type)>-1||e.type===t,ka=t=>e=>{if(fa(e)){const{node:s,$from:i}=e;if(ga(t,s))return{node:s,pos:i.pos,depth:i.depth}}},ba=(t,e,s={})=>{const i=t=>t.type===e,n=ka(e)(t.selection)||ma(i)(t.selection);return Object.keys(s).length&&n?n.node.hasMarkup(e,{...n.node.attrs,...s}):!!n};function va(t=null,e=null){if(!t||!e)return!1;const s=t.parent.childAfter(t.parentOffset);if(!s.node)return!1;const i=s.node.marks.find(t=>t.type===e);if(!i)return!1;let n=t.index(),a=t.start()+s.offset,r=n+1,o=a+s.node.nodeSize;while(n>0&&i.isInSet(t.parent.child(n-1).marks))n-=1,a-=t.parent.child(n).nodeSize;while(r{const{tr:i,selection:n}=e;let{from:a,to:r}=n;const{$from:o,empty:l}=n;if(l){const e=va(o,t);a=e.from,r=e.to}return i.removeMark(a,r,t),s(i)}},ya=function(t,e,s){const i=n=>{const a=[];return n.forEach(n=>{if(n.isText){const{text:i}=n;let r,o=0;do{if(r=t.exec(i),r){const t=r.index,i=t+r[0].length,l=s instanceof Function?s(r[0]):s;t>0&&a.push(n.cut(o,t)),a.push(n.cut(t,i).mark(e.create(l).addToSet(n.marks))),o=i}}while(r);onew ea["j"](i(t.content),t.openStart,t.openEnd)}})},_a=function(t,e,s={}){return(i,n,a)=>{const r=ba(i,t,s);return r?Object(ia["d"])(e)(i,n,a):Object(ia["d"])(t,s)(i,n,a)}};function wa(t,e){return t.type===e.nodes.bulletList||t.type===e.nodes.orderedList||t.type===e.nodes.todoList}function xa(t,e){return(s,i,n)=>{const{schema:a,selection:r}=s,{$from:o,$to:l}=r,c=o.blockRange(l);if(!c)return!1;const u=ma(t=>wa(t,a))(r);if(c.depth>=1&&u&&c.depth-u.depth<=1){if(u.node.type===t)return Object(aa["b"])(e)(s,i,n);if(wa(u.node,a)&&t.validContent(u.node.content)){const{tr:e}=s;return e.setNodeMarkup(u.pos,t),i&&i(e),!1}}return Object(aa["e"])(t)(s,i,n)}}var Oa=function(t,e){return(s,i)=>{const{tr:n,selection:a,doc:r}=s,{ranges:o,empty:l}=a;if(l){const{from:s,to:i}=va(a.$from,t);r.rangeHasMark(s,i,t)&&n.removeMark(s,i,t),n.addMark(s,i,t.create(e))}else o.forEach(s=>{const{$to:i,$from:a}=s;r.rangeHasMark(a.pos,i.pos,t)&&n.removeMark(a.pos,i.pos,t),n.addMark(a.pos,i.pos,t.create(e))});return i(n)}},Ca={chainCommands:ia["b"],exitCode:ia["c"],setBlockType:ia["d"],toggleMark:ia["e"],wrappingInputRule:na["e"],textblockTypeInputRule:na["c"],addListNodes:aa["a"],wrapInList:aa["e"],splitListItem:aa["d"],liftListItem:aa["b"],sinkListItem:aa["c"],getMarkAttrs:ra,markInputRule:la,markIsActive:ca,markPasteRule:ua,minMax:da,nodeIsActive:ba,nodeInputRule:pa,pasteRule:ya,removeMark:$a,toggleBlockType:_a,toggleList:xa,updateMark:Oa};class Sa{emit(t,...e){this._callbacks=this._callbacks||{};const s=this._callbacks[t];return s&&s.forEach(t=>t.apply(this,e)),this}off(t,e){if(arguments.length){const s=this._callbacks?this._callbacks[t]:null;s&&(e?this._callbacks[t]=s.filter(t=>t!==e):delete this._callbacks[t])}else this._callbacks={};return this}on(t,e){return this._callbacks=this._callbacks||{},this._callbacks[t]=this._callbacks[t]||[],this._callbacks[t].push(e),this}}class Ea{constructor(t=[],e){t.forEach(t=>{t.bindEditor(e),t.init()}),this.extensions=t}commands({schema:t,view:e}){return this.extensions.filter(t=>t.commands).reduce((s,i)=>{const{name:n,type:a}=i,r={},o=i.commands({schema:t,utils:Ca,...["node","mark"].includes(a)?{type:t[a+"s"][n]}:{}}),l=(t,s)=>{r[t]=t=>{if("function"!==typeof s||!e.editable)return!1;e.focus();const i=s(t);return"function"===typeof i?i(e.state,e.dispatch,e):i}};return"object"===typeof o?Object.entries(o).forEach(([t,e])=>{l(t,e)}):l(n,o),{...s,...r}},{})}buttons(t="mark"){const e={};return this.extensions.filter(e=>e.type===t).filter(t=>t.button).forEach(t=>{Array.isArray(t.button)?t.button.forEach((s,i)=>{e[t.name+"-"+i]=s}):e[t.name]=t.button}),e}getAllowedExtensions(t){return t instanceof Array||!t?t instanceof Array?this.extensions.filter(e=>!t.includes(e.name)):this.extensions:[]}getFromExtensions(t,e,s=this.extensions){return s.filter(t=>["extension"].includes(t.type)).filter(e=>e[t]).map(s=>s[t]({...e,utils:Ca}))}getFromNodesAndMarks(t,e,s=this.extensions){return s.filter(t=>["node","mark"].includes(t.type)).filter(e=>e[t]).map(s=>s[t]({...e,type:e.schema[s.type+"s"][s.name],utils:Ca}))}inputRules({schema:t,excludedExtensions:e}){const s=this.getAllowedExtensions(e),i=this.getFromExtensions("inputRules",{schema:t},s),n=this.getFromNodesAndMarks("inputRules",{schema:t},s);return[...i,...n].reduce((t,e)=>[...t,...e],[])}keymaps({schema:t}){const e=this.getFromExtensions("keys",{schema:t}),s=this.getFromNodesAndMarks("keys",{schema:t});return[...e,...s].map(t=>Object(sa["a"])(t))}get marks(){return this.extensions.filter(t=>"mark"===t.type).reduce((t,{name:e,schema:s})=>({...t,[e]:s}),{})}get nodes(){return this.extensions.filter(t=>"node"===t.type).reduce((t,{name:e,schema:s})=>({...t,[e]:s}),{})}get options(){const{view:t}=this;return this.extensions.reduce((e,s)=>({...e,[s.name]:new Proxy(s.options,{set(e,s,i){const n=e[s]!==i;return Object.assign(e,{[s]:i}),n&&t.updateState(t.state),!0}})}),{})}pasteRules({schema:t,excludedExtensions:e}){const s=this.getAllowedExtensions(e),i=this.getFromExtensions("pasteRules",{schema:t},s),n=this.getFromNodesAndMarks("pasteRules",{schema:t},s);return[...i,...n].reduce((t,e)=>[...t,...e],[])}plugins({schema:t}){const e=this.getFromExtensions("plugins",{schema:t}),s=this.getFromNodesAndMarks("plugins",{schema:t});return[...e,...s].reduce((t,e)=>[...t,...e],[]).map(t=>t instanceof Qn["d"]?t:new Qn["d"](t))}}class ja{constructor(t={}){this.options={...this.defaults,...t}}init(){return null}bindEditor(t=null){this.editor=t}get name(){return null}get type(){return"extension"}get defaults(){return{}}plugins(){return[]}inputRules(){return[]}pasteRules(){return[]}keys(){return{}}}class Ta extends ja{constructor(t={}){super(t)}get type(){return"node"}get schema(){return null}commands(){return{}}}class La extends Ta{get defaults(){return{inline:!1}}get name(){return"doc"}get schema(){return{content:this.options.inline?"paragraph+":"block+"}}}class Ia extends Ta{commands({utils:t,type:e}){return{paragraph:()=>t.setBlockType(e)}}get schema(){return{content:"inline*",group:"block",draggable:!1,parseDOM:[{tag:"p"}],toDOM:()=>["p",0]}}get name(){return"paragraph"}}class Aa extends Ta{get name(){return"text"}get schema(){return{group:"inline"}}}class Ba extends Sa{constructor(t={}){super(),this.defaults={autofocus:!1,content:"",disableInputRules:!1,disablePasteRules:!1,editable:!0,element:null,extensions:[],emptyDocument:{type:"doc",content:[]},events:{},inline:!1,parseOptions:{},topNode:"doc",useBuiltInExtensions:!0},this.init(t)}blur(){this.view.dom.blur()}get builtInExtensions(){return this.options.useBuiltInExtensions?[new La({inline:this.options.inline}),new Aa,new Ia]:[]}buttons(t){return this.extensions.buttons(t)}clearContent(t=!1){this.setContent(this.options.emptyDocument,t)}command(t,...e){this.commands[t]&&this.commands[t](...e)}createCommands(){return this.extensions.commands({schema:this.schema,view:this.view})}createDocument(t,e=this.options.parseOptions){if(null===t)return this.schema.nodeFromJSON(this.options.emptyDocument);if("object"===typeof t)try{return this.schema.nodeFromJSON(t)}catch(s){return window.console.warn("Invalid content.","Passed value:",t,"Error:",s),this.schema.nodeFromJSON(this.options.emptyDocument)}if("string"===typeof t){const s=`
${t}
`,i=new window.DOMParser,n=i.parseFromString(s,"text/html").body.firstElementChild;return ea["a"].fromSchema(this.schema).parse(n,e)}return!1}createEvents(){const t=this.options.events||{};return Object.entries(t).forEach(([t,e])=>{this.on(t,e)}),t}createExtensions(){return new Ea([...this.builtInExtensions,...this.options.extensions],this)}createFocusEvents(){const t=(t,e,s=!0)=>{this.focused=s,this.emit(s?"focus":"blur",{event:e,state:t.state,view:t});const i=this.state.tr.setMeta("focused",s);this.view.dispatch(i)};return new Qn["d"]({props:{attributes:{tabindex:0},handleDOMEvents:{focus:(e,s)=>{t(e,s,!0)},blur:(e,s)=>{t(e,s,!1)}}}})}createInputRules(){return this.extensions.inputRules({schema:this.schema,excludedExtensions:this.options.disableInputRules})}createKeymaps(){return this.extensions.keymaps({schema:this.schema})}createMarks(){return this.extensions.marks}createNodes(){return this.extensions.nodes}createPasteRules(){return this.extensions.pasteRules({schema:this.schema,excludedExtensions:this.options.disablePasteRules})}createPlugins(){return this.extensions.plugins({schema:this.schema})}createSchema(){return new ea["i"]({topNode:this.options.topNode,nodes:this.nodes,marks:this.marks})}createState(){return Qn["b"].create({schema:this.schema,doc:this.createDocument(this.options.content),plugins:[...this.plugins,Object(na["b"])({rules:this.inputRules}),...this.pasteRules,...this.keymaps,Object(sa["a"])({Backspace:na["d"]}),Object(sa["a"])(ia["a"]),this.createFocusEvents()]})}createView(){return new ta["a"](this.element,{dispatchTransaction:this.dispatchTransaction.bind(this),editable:()=>this.options.editable,handlePaste:(...t)=>{this.emit("paste",...t)},handleDrop:(...t)=>{this.emit("drop",...t)},state:this.createState()})}destroy(){this.view&&this.view.destroy()}dispatchTransaction(t){const e=this.state,s=this.state.apply(t);this.view.updateState(s),this.selection={from:this.state.selection.from,to:this.state.selection.to},this.setActiveNodesAndMarks();const i={getHTML:this.getHTML.bind(this),getJSON:this.getJSON.bind(this),state:this.state,transaction:t};this.emit("transaction",i),!t.docChanged&&t.getMeta("preventUpdate")||this.emit("update",i);const{from:n,to:a}=this.state.selection,r=!e||!e.selection.eq(s.selection);this.emit(s.selection.empty?"deselect":"select",{...i,from:n,hasChanged:r,to:a})}focus(t=null){if(this.view.focused&&null===t||!1===t)return;const{from:e,to:s}=this.selectionAtPosition(t);this.setSelection(e,s),setTimeout(()=>this.view.focus(),10)}getHTML(){const t=document.createElement("div"),e=ea["b"].fromSchema(this.schema).serializeFragment(this.state.doc.content);return t.appendChild(e),this.options.inline&&t.querySelector("p")?t.querySelector("p").innerHTML:t.innerHTML}getJSON(){return this.state.doc.toJSON()}getMarkAttrs(t=null){return this.activeMarkAttrs[t]}getSchemaJSON(){return JSON.parse(JSON.stringify({nodes:this.nodes,marks:this.marks}))}init(t={}){this.options={...this.defaults,...t},this.element=this.options.element,this.focused=!1,this.selection={from:0,to:0},this.events=this.createEvents(),this.extensions=this.createExtensions(),this.nodes=this.createNodes(),this.marks=this.createMarks(),this.schema=this.createSchema(),this.keymaps=this.createKeymaps(),this.inputRules=this.createInputRules(),this.pasteRules=this.createPasteRules(),this.plugins=this.createPlugins(),this.view=this.createView(),this.commands=this.createCommands(),this.setActiveNodesAndMarks(),!1!==this.options.autofocus&&this.focus(this.options.autofocus),this.emit("init",{view:this.view,state:this.state}),this.extensions.view=this.view}isEditable(){return this.options.editable}isEmpty(){if(this.state)return 0===this.state.doc.textContent.length}get isActive(){return Object.entries({...this.activeMarks,...this.activeNodes}).reduce((t,[e,s])=>({...t,[e]:(t={})=>s(t)}),{})}removeMark(t){if(this.schema.marks[t])return Ca.removeMark(this.schema.marks[t])(this.state,this.view.dispatch)}selectionAtPosition(t=null){if(this.selection&&null===t)return this.selection;if("start"===t||!0===t)return{from:0,to:0};if("end"===t){const{doc:t}=this.state;return{from:t.content.size,to:t.content.size}}return{from:t,to:t}}setActiveNodesAndMarks(){this.activeMarks=Object.values(this.schema.marks).filter(t=>Ca.markIsActive(this.state,t)).map(t=>t.name),this.activeMarkAttrs=Object.entries(this.schema.marks).reduce((t,[e,s])=>({...t,[e]:Ca.getMarkAttrs(this.state,s)}),{}),this.activeNodes=Object.values(this.schema.nodes).filter(t=>Ca.nodeIsActive(this.state,t)).map(t=>t.name)}setContent(t={},e=!1,s){const{doc:i,tr:n}=this.state,a=this.createDocument(t,s),r=Qn["g"].create(i,0,i.content.size),o=n.setSelection(r).replaceSelectionWith(a,!1).setMeta("preventUpdate",!e);this.view.dispatch(o)}setSelection(t=0,e=0){const{doc:s,tr:i}=this.state,n=Ca.minMax(t,0,s.content.size),a=Ca.minMax(e,0,s.content.size),r=Qn["g"].create(s,n,a),o=i.setSelection(r);this.view.dispatch(o)}get state(){return this.view?this.view.state:null}toggleMark(t){if(this.schema.marks[t])return Ca.toggleMark(this.schema.marks[t])(this.state,this.view.dispatch)}updateMark(t,e){if(this.schema.marks[t])return Ca.updateMark(this.schema.marks[t],e)(this.state,this.view.dispatch)}}var Da=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-form-dialog",{ref:"dialog",attrs:{fields:t.fields,"submit-button":t.$t("confirm"),size:"medium"},on:{close:function(e){return t.$emit("close")},submit:t.submit},model:{value:t.link,callback:function(e){t.link=e},expression:"link"}})},Ma=[],Na={data(){return{link:{href:null,title:null,target:!1}}},computed:{fields(){return{href:{label:"URL",type:"text",icon:"url"},title:{label:"Title",type:"text",icon:"title"},target:{label:"Open in new window",type:"toggle",text:["no","yes"]}}}},methods:{open(t){this.link={title:null,target:!1,...t},this.link.target=Boolean(this.link.target),this.$refs.dialog.open()},submit(){this.$emit("submit",{...this.link,target:this.link.target?"_blank":null}),this.$refs.dialog.close()}}},Pa=Na,Ra=Object(c["a"])(Pa,Da,Ma,!1,null,null,null),qa=Ra.exports;class Fa extends ja{constructor(t={}){super(t)}command(){return()=>{}}remove(){this.editor.removeMark(this.name)}get schema(){return null}get type(){return"mark"}toggle(){return this.editor.toggleMark(this.name)}update(t){this.editor.updateMark(this.name,t)}}class Ua extends Fa{get button(){return{icon:"code",label:"Code"}}commands(){return()=>this.toggle()}inputRules({type:t,utils:e}){return[e.markInputRule(/(?:`)([^`]+)(?:`)$/,t)]}keys(){return{"Mod-`":()=>this.toggle()}}get name(){return"code"}pasteRules({type:t,utils:e}){return[e.markPasteRule(/(?:`)([^`]+)(?:`)/g,t)]}get schema(){return{excludes:"_",parseDOM:[{tag:"code"}],toDOM:()=>["code",0]}}}class za extends Fa{get button(){return{icon:"bold",label:"Bold"}}commands(){return()=>this.toggle()}inputRules({type:t,utils:e}){return[e.markInputRule(/(?:\*\*|__)([^*_]+)(?:\*\*|__)$/,t)]}keys(){return{"Mod-b":()=>this.toggle()}}get name(){return"bold"}pasteRules({type:t,utils:e}){return[e.markPasteRule(/(?:\*\*|__)([^*_]+)(?:\*\*|__)/g,t)]}get schema(){return{parseDOM:[{tag:"strong"},{tag:"b",getAttrs:t=>"normal"!==t.style.fontWeight&&null},{style:"font-weight",getAttrs:t=>/^(bold(er)?|[5-9]\d{2,})$/.test(t)&&null}],toDOM:()=>["strong",0]}}}class Ha extends Fa{get button(){return{icon:"italic",label:"Italic"}}commands(){return()=>this.toggle()}inputRules({type:t,utils:e}){return[e.markInputRule(/(?:^|[^_])(_([^_]+)_)$/,t),e.markInputRule(/(?:^|[^*])(\*([^*]+)\*)$/,t)]}keys(){return{"Mod-i":()=>this.toggle()}}get name(){return"italic"}pasteRules({type:t,utils:e}){return[e.markPasteRule(/_([^_]+)_/g,t),e.markPasteRule(/\*([^*]+)\*/g,t)]}get schema(){return{parseDOM:[{tag:"i"},{tag:"em"},{style:"font-style=italic"}],toDOM:()=>["em",0]}}}class Ka extends Fa{get button(){return{icon:"url",label:"Link"}}commands(){return{link:()=>{this.editor.emit("link")},insertLink:(t={})=>{if(t.href)return this.update(t)},removeLink:()=>this.remove(),toggleLink:(t={})=>{t.href&&t.href.length>0?this.editor.command("insertLink",t):this.editor.command("removeLink")}}}get defaults(){return{target:null}}get name(){return"link"}pasteRules({type:t,utils:e}){return[e.pasteRule(/https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-zA-Z]{2,}\b([-a-zA-Z0-9@:%_+.~#?&//=,]*)/gi,t,t=>({href:t}))]}plugins(){return[{props:{handleClick:(t,e,s)=>{const i=this.editor.getMarkAttrs("link");i.href&&!0===s.altKey&&s.target instanceof HTMLAnchorElement&&(s.stopPropagation(),window.open(i.href,i.target))}}}]}get schema(){return{attrs:{href:{default:null},target:{default:null},title:{default:null}},inclusive:!1,parseDOM:[{tag:"a[href]",getAttrs:t=>({href:t.getAttribute("href"),target:t.getAttribute("target")})}],toDOM:t=>["a",{...t.attrs,rel:"noopener noreferrer nofollow"},0]}}}class Ga extends Fa{get button(){return{icon:"strikethrough",label:"Strike-through"}}commands(){return()=>this.toggle()}inputRules({type:t,utils:e}){return[e.markInputRule(/~([^~]+)~$/,t)]}keys(){return{"Mod-d":()=>this.toggle()}}get name(){return"strike"}pasteRules({type:t,utils:e}){return[e.markPasteRule(/~([^~]+)~/g,t)]}get schema(){return{parseDOM:[{tag:"s"},{tag:"del"},{tag:"strike"},{style:"text-decoration",getAttrs:t=>"line-through"===t}],toDOM:()=>["s",0]}}}class Ya extends Fa{get button(){return{icon:"underline",label:"Underline"}}commands(){return()=>this.toggle()}keys(){return{"Mod-u":()=>this.toggle()}}get name(){return"underline"}get schema(){return{parseDOM:[{tag:"u"},{style:"text-decoration",getAttrs:t=>"underline"===t}],toDOM:()=>["u",0]}}}class Wa extends Ta{get button(){return{label:"Bullet list",icon:"list-bullet"}}commands({type:t,schema:e,utils:s}){return()=>s.toggleList(t,e.nodes.listItem)}inputRules({type:t,utils:e}){return[e.wrappingInputRule(/^\s*([-+*])\s$/,t)]}keys({type:t,schema:e,utils:s}){return{"Shift-Ctrl-8":s.toggleList(t,e.nodes.listItem)}}get name(){return"bulletList"}get schema(){return{content:"listItem+",group:"block",parseDOM:[{tag:"ul"}],toDOM:()=>["ul",0]}}}class Va extends Ta{commands({utils:t,type:e}){return()=>this.createHardBreak(t,e)}createHardBreak(t,e){return t.chainCommands(t.exitCode,(t,s)=>(s(t.tr.replaceSelectionWith(e.create()).scrollIntoView()),!0))}get defaults(){return{enter:!1,text:!1}}keys({utils:t,type:e}){const s=this.createHardBreak(t,e);let i={"Mod-Enter":s,"Shift-Enter":s};return this.options.enter&&(i["Enter"]=s),i}get name(){return"hardBreak"}get schema(){return{inline:!0,group:"inline",selectable:!1,parseDOM:[{tag:"br"}],toDOM:()=>["br"]}}}class Ja extends Ta{get button(){return this.options.levels.map(t=>({command:"h"+t,icon:"title",label:"Heading "+t}))}commands({type:t,schema:e,utils:s}){let i={toggleHeading:i=>s.toggleBlockType(t,e.nodes.paragraph,i)};return this.options.levels.forEach(e=>{i["h"+e]=()=>s.setBlockType(t,{level:e})}),i}get defaults(){return{levels:[1,2,3]}}inputRules({type:t,utils:e}){return this.options.levels.map(s=>e.textblockTypeInputRule(new RegExp(`^(#{1,${s}})\\s$`),t,()=>({level:s})))}keys({type:t,utils:e}){return this.options.levels.reduce((s,i)=>({...s,["Shift-Ctrl-"+i]:e.setBlockType(t,{level:i})}),{})}get name(){return"heading"}get schema(){return{attrs:{level:{default:1}},content:"inline*",group:"block",defining:!0,draggable:!1,parseDOM:this.options.levels.map(t=>({tag:"h"+t,attrs:{level:t}})),toDOM:t=>["h"+t.attrs.level,0]}}}class Za extends Ta{commands({type:t}){return()=>(e,s)=>s(e.tr.replaceSelectionWith(t.create()))}inputRules({type:t,utils:e}){return[e.nodeInputRule(/^(?:---|___\s|\*\*\*\s)$/,t)]}get name(){return"horizontalRule"}get schema(){return{group:"block",parseDOM:[{tag:"hr"}],toDOM:()=>["hr"]}}}class Xa extends Ta{keys({type:t,utils:e}){return{Enter:e.splitListItem(t),"Shift-Tab":e.liftListItem(t),Tab:e.sinkListItem(t)}}get name(){return"listItem"}get schema(){return{content:"paragraph block*",defining:!0,draggable:!1,parseDOM:[{tag:"li"}],toDOM:()=>["li",0]}}}class Qa extends Ta{get button(){return{label:"Ordered list",icon:"list-numbers"}}commands({type:t,schema:e,utils:s}){return()=>s.toggleList(t,e.nodes.listItem)}inputRules({type:t,utils:e}){return[e.wrappingInputRule(/^(\d+)\.\s$/,t,t=>({order:+t[1]}),(t,e)=>e.childCount+e.attrs.order===+t[1])]}keys({type:t,schema:e,utils:s}){return{"Shift-Ctrl-9":s.toggleList(t,e.nodes.listItem)}}get name(){return"orderedList"}get schema(){return{attrs:{order:{default:1}},content:"listItem+",group:"block",parseDOM:[{tag:"ol",getAttrs:t=>({order:t.hasAttribute("start")?+t.getAttribute("start"):1})}],toDOM:t=>1===t.attrs.order?["ol",0]:["ol",{start:t.attrs.order},0]}}}var tr=s("8726");class er extends ja{commands(){return{undo:()=>tr["d"],redo:()=>tr["b"],undoDepth:()=>tr["e"],redoDepth:()=>tr["c"]}}get defaults(){return{depth:"",newGroupDelay:""}}keys(){return{"Mod-z":tr["d"],"Mod-y":tr["b"],"Shift-Mod-z":tr["b"],"Mod-я":tr["d"],"Shift-Mod-я":tr["b"]}}get name(){return"history"}plugins(){return[Object(tr["a"])({depth:this.options.depth,newGroupDelay:this.options.newGroupDelay})]}}class sr extends ja{constructor(t={}){super(t)}close(){this.visible=!1,this.emit()}emit(){this.editor.emit("toolbar",{marks:this.marks,nodes:this.nodes,position:this.position,visible:this.visible})}init(){this.position={left:0,bottom:0},this.visible=!1,this.editor.on("blur",()=>{this.close()}),this.editor.on("deselect",()=>{this.close()}),this.editor.on("select",({hasChanged:t})=>{!1!==t?this.open():this.emit()})}get marks(){return this.editor.activeMarks}get nodes(){return this.editor.activeNodes}open(){this.visible=!0,this.reposition(),this.emit()}reposition(){const{from:t,to:e}=this.editor.selection,s=this.editor.view.coordsAtPos(t),i=this.editor.view.coordsAtPos(e,!0),n=this.editor.element.getBoundingClientRect();let a=(s.left+i.left)/2-n.left,r=Math.round(n.bottom-s.top);return this.position={bottom:r,left:a}}get type(){return"toolbar"}}var ir,nr,ar=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",{staticClass:"k-writer-toolbar"},[Object.keys(t.nodeButtons).length>1&&t.activeNode?s("k-dropdown",{nativeOn:{mousedown:function(t){t.preventDefault()}}},[s("k-button",{staticClass:"k-writer-toolbar-button k-writer-toolbar-nodes",attrs:{icon:t.activeNode.icon},on:{click:function(e){return t.$refs.nodes.toggle()}}}),s("k-dropdown-content",{ref:"nodes"},t._l(t.nodeButtons,(function(e,i){return s("k-dropdown-item",{key:i,attrs:{icon:e.icon},on:{click:function(s){return t.command(e.command||i)}}},[t._v(" "+t._s(e.label)+" ")])})),1)],1):t._e(),t._l(t.markButtons,(function(e,i){return s("k-button",{key:i,class:{"k-writer-toolbar-button":!0,"k-writer-toolbar-button-active":t.activeMarks.includes(i)},attrs:{icon:e.icon},on:{mousedown:function(s){return s.preventDefault(),t.command(e.command||i)}}})}))],2)},rr=[],or={props:{activeMarks:{type:Array,default(){return[]}},activeNodes:{type:Array,default(){return[]}},editor:{type:Object,required:!0},marks:{type:Array}},computed:{activeNode(){const t=Object.keys(this.nodeButtons).find(t=>this.activeNodes.includes(t));return!!t&&this.nodeButtons[t]},markButtons(){return this.buttons("mark")},nodeButtons(){return this.buttons("node")}},methods:{buttons(t){const e=this.editor.buttons(t);let s=this.sorting;!1!==s&&!1!==Array.isArray(s)||(s=Object.keys(e));let i={};return s.forEach(t=>{e[t]&&(i[t]=e[t])}),i},command(t,...e){this.$emit("command",t,...e)}}},lr=or,cr=(s("6a16"),Object(c["a"])(lr,ar,rr,!1,null,null,null)),ur=cr.exports,dr={components:{"k-writer-link-dialog":qa,"k-writer-toolbar":ur},props:{breaks:Boolean,code:Boolean,disabled:Boolean,emptyDocument:{type:Object,default(){return{type:"doc",content:[]}}},headings:[Array,Boolean],inline:{type:Boolean,default:!1},marks:{type:[Array,Boolean],default:!0},nodes:{type:[Array,Boolean],default(){return["heading","bulletList","orderedList"]}},placeholder:String,spellcheck:Boolean,extensions:Array,value:{type:String,default:""}},data(){return{editor:null,html:this.value,isEmpty:!0,toolbar:!1}},watch:{value(t,e){t!==e&&t!==this.html&&(this.html=t,this.editor.setContent(this.html))}},mounted(){this.editor=new Ba({content:this.value,editable:!this.disabled,element:this.$el,emptyDocument:this.emptyDocument,events:{link:()=>{this.$refs.linkDialog.open(this.editor.getMarkAttrs("link"))},toolbar:t=>{this.toolbar=t},update:()=>{this.html=this.editor.getHTML(),this.isEmpty=this.editor.isEmpty(),this.$emit("input",this.html)}},extensions:[...this.createMarks(),...this.createNodes(),new er,new sr,...this.extensions||[]],inline:this.inline}),this.isEmpty=this.editor.isEmpty()},beforeDestroy(){this.editor.destroy()},methods:{filterExtensions(t,e,s){!1===e?e=[]:!0!==e&&!1!==Array.isArray(e)||(e=Object.keys(t));let i=[];return e.forEach(e=>{t[e]&&i.push(t[e])}),"function"===typeof s&&(i=s(e,i)),i},command(t,...e){this.editor.command(t,...e)},createMarks(){return this.filterExtensions({bold:new za,italic:new Ha,strike:new Ga,underline:new Ya,code:new Ua,link:new Ka},this.marks)},createNodes(){const t=new Va({text:!0,enter:this.inline});return!0===this.inline?[t]:this.filterExtensions({bulletList:new Wa,orderedList:new Qa,heading:new Ja,horizontalRule:new Za,listItem:new Xa},this.nodes,(e,s)=>((e.includes("bulletList")||e.includes("orderedList"))&&s.push(new Xa),s.push(t),s))},getHTML(){return this.editor.getHTML()},focus(){this.editor.focus()}}},pr=dr,hr=(s("4041"),Object(c["a"])(pr,Zn,Xn,!1,null,null,null)),mr=hr.exports,fr=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("label",{staticClass:"k-checkbox-input",on:{click:function(t){t.stopPropagation()}}},[s("input",{ref:"input",staticClass:"k-checkbox-input-native",attrs:{id:t.id,disabled:t.disabled,type:"checkbox"},domProps:{checked:t.value},on:{change:function(e){return t.onChange(e.target.checked)}}}),s("span",{staticClass:"k-checkbox-input-icon",attrs:{"aria-hidden":"true"}},[s("svg",{attrs:{width:"12",height:"10",viewBox:"0 0 12 10",xmlns:"http://www.w3.org/2000/svg"}},[s("path",{attrs:{d:"M1 5l3.3 3L11 1","stroke-width":"2",fill:"none","fill-rule":"evenodd"}})])]),s("span",{staticClass:"k-checkbox-input-label",domProps:{textContent:t._s(t.label)}})])},gr=[],kr=s("b5ae"),br={inheritAttrs:!1,props:{autofocus:Boolean,disabled:Boolean,id:[Number,String],label:String,required:Boolean,value:Boolean},watch:{value(){this.onInvalid()}},mounted(){this.onInvalid(),this.$props.autofocus&&this.focus()},methods:{focus(){this.$refs.input.focus()},onChange(t){this.$emit("input",t)},onInvalid(){this.$emit("invalid",this.$v.$invalid,this.$v)},select(){this.focus()}},validations(){return{value:{required:!this.required||kr["required"]}}}},vr=br,$r=(s("42e4"),Object(c["a"])(vr,fr,gr,!1,null,null,null)),yr=$r.exports,_r=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("ul",{staticClass:"k-checkboxes-input",style:"--columns:"+t.columns},t._l(t.options,(function(e,i){return s("li",{key:i},[s("k-checkbox-input",{attrs:{id:t.id+"-"+i,label:e.text,value:-1!==t.selected.indexOf(e.value)},on:{input:function(s){return t.onInput(e.value,s)}}})],1)})),0)},wr=[],xr={inheritAttrs:!1,props:{autofocus:Boolean,columns:Number,disabled:Boolean,id:{type:[Number,String],default(){return this._uid}},max:Number,min:Number,options:Array,required:Boolean,value:{type:[Array,Object],default(){return[]}}},data(){return{selected:this.valueToArray(this.value)}},watch:{value(t){this.selected=this.valueToArray(t)},selected(){this.onInvalid()}},mounted(){this.onInvalid(),this.$props.autofocus&&this.focus()},methods:{focus(){this.$el.querySelector("input").focus()},onInput(t,e){if(!0===e)this.selected.push(t);else{const e=this.selected.indexOf(t);-1!==e&&this.selected.splice(e,1)}this.$emit("input",this.selected)},onInvalid(){this.$emit("invalid",this.$v.$invalid,this.$v)},select(){this.focus()},valueToArray(t){return!0===Array.isArray(t)?t:"string"===typeof t?String(t).split(","):"object"===typeof t?Object.values(t):void 0}},validations(){return{selected:{required:!this.required||kr["required"],min:!this.min||Object(kr["minLength"])(this.min),max:!this.max||Object(kr["maxLength"])(this.max)}}}},Or=xr,Cr=Object(c["a"])(Or,_r,wr,!1,null,null,null),Sr=Cr.exports,Er=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-text-input",t._b({ref:"input",class:"k-"+t.type+"-input",attrs:{placeholder:t.placeholder,spellcheck:!1,type:"text"},on:{blur:t.onBlur,input:t.onInput,invalid:t.onInvalid,focus:function(e){return t.$emit("focus")},keydown:[function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"down",40,e.key,["Down","ArrowDown"])?null:(e.stopPropagation(),e.preventDefault(),t.onDown(e))},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"up",38,e.key,["Up","ArrowUp"])?null:(e.stopPropagation(),e.preventDefault(),t.onUp(e))},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"enter",13,e.key,"Enter")?null:(e.stopPropagation(),e.preventDefault(),t.onEnter(e))},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"tab",9,e.key,"Tab")?null:t.onTab(e)}]},model:{value:t.input,callback:function(e){t.input=e},expression:"input"}},"k-text-input",t.$props,!1))},jr=[],Tr={inheritAttrs:!1,props:{autofocus:Boolean,disabled:Boolean,display:{type:String,default:"DD.MM.YYYY"},id:[String,Number],max:String,min:String,required:Boolean,step:{type:Object,default(){return{size:1,unit:"day"}}},type:{type:String,default:"date"},value:String},data(){return{input:this.toFormat(this.value),selected:null}},computed:{map(){return{second:["ss"],minute:["mm"],hour:[12===this.notation?"hh":"HH"],day:["D","DD"],month:["M","MM","MMM","MMMM"],year:["YY","YYYY"]}},parts(){return String(this.input).split(/\W/)},patterns(){let t=[],e=[];for(let s=0;s[t]):i.forEach(t=>{s=s.concat(e.map(e=>e.concat([t])))}),t=t.concat(s),e=s,s=[]}}return t.map(t=>t.join(this.separator)).reverse()},placeholder(){return this.display.toLowerCase()},result(){if(this.input){const t=this.$helper.string.ucwords(this.input);for(let e=0;e{this.select()})},onBlur(){this.input=this.result?this.toFormat(this.result):null,this.selected=null,this.emit("update")},onDown(){this.manipulate("subtract")},onEnter(){this.onBlur(),this.emit("enter")},onInput(){this.emit("input")},onInvalid(t,e){this.$emit("invalid",t||this.$v.$invalid,e||this.$v)},onTab(t){const e=this.toCursorIndex();null===this.selected?this.selected=e||0:e!==this.selected?this.selected=e:this.selected++,this.selected>=this.parts.length?this.selected=null:(t.preventDefault(),t.stopPropagation(),this.select())},onUp(){this.manipulate("add")},select(){if(null!==this.selected){const t=this.toRange(this.selected);this.selected>0&&t.start++,this.$refs.input.$refs.input.setSelectionRange(t.start,t.end)}},toCursorIndex(){if(0===this.$refs.input.$refs.input.selectionStart&&this.$refs.input.$refs.input.selectionEnd===String(this.input).length)return null;for(let t=0;t=this.$refs.input.$refs.input.selectionEnd)return t}},toDatetime(t){return this.$library.dayjs.utc(t)},toFormat(t){return t?("string"==typeof t&&(t=this.toDatetime(t)),!1===t.isValid()?null:t.format(this.display)):null},toNearest(t,e=this.step.unit,s=this.step.size){t=t.clone(),"day"===e&&(e="date");const i=t.get(e),n=Math.round(i/s)*s;return t.set(e,n).startOf(e)},toIndex(t=this.step.unit){const e=this.map[t];for(let s=0;se.includes(t));return s[0]},toUnit(t,e=!0){const s=Object.keys(this.map),i=Object.values(this.map);let n=i.findIndex(e=>e.includes(t));return!0===e&&nthis.$helper.validate.datetime(this,t,this.min,"isAfter",this.step.unit)),max:!this.max||(t=>this.$helper.validate.datetime(this,t,this.max,"isBefore",this.step.unit))}}}},Lr=Tr,Ir=Object(c["a"])(Lr,Er,jr,!1,null,null,null),Ar=Ir.exports,Br=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",{staticClass:"k-datetime-input"},[s("k-date-input",t._b({ref:"dateInput",on:{input:function(e){return t.onInput(e,"date")},update:function(e){return t.onUpdate(e,"date")},enter:function(e){return t.onEnter(e,"date")},focus:function(e){return t.$emit("focus")}}},"k-date-input",t.dateOptions,!1)),t.time?[s("k-time-input",t._b({ref:"timeInput",on:{input:function(e){return t.onInput(e,"time")},update:function(e){return t.onUpdate(e,"time")},enter:function(e){return t.onEnter(e,"time")},focus:function(e){return t.$emit("focus")}}},"k-time-input",t.timeOptions,!1))]:t._e()],2)},Dr=[],Mr={inheritAttrs:!1,props:{...Ar.props,time:{type:[Boolean,Object],default(){return{}}},value:String},data(){return{input:this.toDatetime(this.value)}},computed:{dateOptions(){return{autofocus:this.autofocus,disabled:this.disabled,display:this.display,id:this.id,required:this.required,value:this.value}},timeOptions(){return{...this.time,disabled:this.disabled,required:this.required,value:this.value}}},watch:{value(){this.input=this.toDatetime(this.value),this.onInvalid()}},mounted(){this.onInvalid()},methods:{emit(t){this.input?this.$emit(t,this.input.format("YYYY-MM-DD HH:mm:ss")):this.$emit(t,"")},focus(){this.$refs.dateInput.focus()},onUpdate(t,e){const s=this.toDatetime(this.value);this.input=this.toDatetime(t,e,s),this.emit("update")},onEnter(t,e){this.onUpdate(e,t),this.emit("enter")},onInput(t,e){this.input=this.toDatetime(t,e,this.input),this.emit("input")},onInvalid(){this.$emit("invalid",this.$v.$invalid,this.$v)},toDatetime(t,e,s){if(!t)return null;let i=this.$library.dayjs.utc(t);return!1===i.isValid()?null:e&&s?"date"===e?s.clone().utc().set("year",i.get("year")).set("month",i.get("month")).set("date",i.get("date")):"time"===e?s.clone().utc().set("hour",i.get("hour")).set("minute",i.get("minute")).set("second",i.get("second")):void 0:i}},validations(){return{value:{min:!this.min||(t=>this.$helper.validate.datetime(this,t,this.min,"isAfter",this.step.unit)),max:!this.max||(t=>this.$helper.validate.datetime(this,t,this.max,"isBefore",this.step.unit)),required:!this.required||kr["required"]}}}},Nr=Mr,Pr=(s("4433"),Object(c["a"])(Nr,Br,Dr,!1,null,null,null)),Rr=Pr.exports,qr=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("input",t._g(t._b({ref:"input",staticClass:"k-text-input",attrs:{dir:t.direction}},"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))},Fr=[],Ur=function(t){const e=t.$store.state.languages.default||null,s=t.$store.state.languages.current||null,i=t.$store.state.system.info.multilang||!1,n=t.$store.state.system.info.user?t.$store.state.system.info.user.language:null,a=s?s.direction:null;if(i&&s&&!1===t.disabled&&(s.direction!==e.direction||n!==s.code))return a},zr={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(){return{listeners:{...this.$listeners,input:t=>this.onInput(t.target.value)}}},computed:{direction(){return Ur(this)}},watch:{value(){this.onInvalid()}},mounted(){this.onInvalid(),this.$props.autofocus&&this.focus(),this.$props.preselect&&this.select()},methods:{focus(){this.$refs.input.focus()},onInput(t){this.$emit("input",t)},onInvalid(){this.$emit("invalid",this.$v.$invalid,this.$v)},select(){this.$refs.input.select()}},validations(){const t=t=>!this.required&&!t||!this.$refs.input.validity.patternMismatch;return{value:{required:!this.required||kr["required"],minLength:!this.minlength||Object(kr["minLength"])(this.minlength),maxLength:!this.maxlength||Object(kr["maxLength"])(this.maxlength),email:"email"!==this.type||kr["email"],url:"url"!==this.type||kr["url"],pattern:!this.pattern||t}}}},Hr=zr,Kr=(s("cb8f"),Object(c["a"])(Hr,qr,Fr,!1,null,null,null)),Gr=Kr.exports,Yr={extends:Gr,props:{...Gr.props,autocomplete:{type:String,default:"email"},placeholder:{type:String,default(){return this.$t("email.placeholder")}},type:{type:String,default:"email"}}},Wr=Yr,Vr=Object(c["a"])(Wr,ir,nr,!1,null,null,null),Jr=Vr.exports,Zr=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-writer",{ref:"input",staticClass:"k-list-input",attrs:{extensions:t.extensions,marks:t.marks,nodes:["bulletList","orderedList"],value:t.value},on:{input:t.onInput}})},Xr=[];class Qr extends La{get schema(){return{content:"bulletList|orderedList"}}}var to,eo,so,io,no,ao,ro,oo,lo={inheritAttrs:!1,props:{marks:{type:[Array,Boolean],default:!0},value:String},computed:{extensions(){return[new Qr]}},methods:{focus(){this.$refs.input.focus()},onInput(t){let e=(new DOMParser).parseFromString(t,"text/html"),s=e.querySelector("ul, ol");s||this.$emit("input","");let i=s.textContent.trim();0!==i.length?this.$emit("input",t):this.$emit("input","")}}},co=lo,uo=(s("82c9"),Object(c["a"])(co,Zr,Xr,!1,null,null,null)),po=uo.exports,ho=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("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 s("k-tag",{key:e.value,ref:e.value,refInFor:!0,attrs:{removable:!0},on:{remove:function(s){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"])||"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"])||"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(" "+t._s(e.text)+" ")])})),s("k-dropdown-content",{ref:"dropdown",attrs:{slot:"footer"},on:{open:t.onOpen,close:t.onClose},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?s("k-dropdown-item",{staticClass:"k-multiselect-search",attrs:{icon:"search"}},[s("input",{directives:[{name:"model",rawName:"v-model",value:t.q,expression:"q"}],ref:"search",attrs:{placeholder:t.search.min?t.$t("search.min",{min:t.search.min}):t.$t("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(),s("div",{staticClass:"k-multiselect-options"},[t._l(t.visible,(function(e){return s("k-dropdown-item",{key:e.value,class:{"k-multiselect-option":!0,selected:t.isSelected(e),disabled:!t.more},attrs:{icon:t.isSelected(e)?"check":"circle-outline"},on:{click:function(s){return s.preventDefault(),t.select(e)}},nativeOn:{keydown:[function(s){return!s.type.indexOf("key")&&t._k(s.keyCode,"enter",13,s.key,"Enter")?null:(s.preventDefault(),s.stopPropagation(),t.select(e))},function(s){return!s.type.indexOf("key")&&t._k(s.keyCode,"space",32,s.key,[" ","Spacebar"])?null:(s.preventDefault(),s.stopPropagation(),t.select(e))}]}},[s("span",{domProps:{innerHTML:t._s(e.display)}}),s("span",{staticClass:"k-multiselect-value",domProps:{innerHTML:t._s(e.info)}})])})),0===t.filtered.length?s("k-dropdown-item",{staticClass:"k-multiselect-option",attrs:{disabled:!0}},[t._v(" "+t._s(t.emptyLabel)+" ")]):t._e()],2),t.visible.length1&&!this.sort},dragOptions(){return{disabled:!this.draggable,draggable:".k-tag",delay:1}},emptyLabel(){return this.q?this.$t("search.results.none"):this.$t("options.none")},filtered(){return this.q&&this.q.length>=(this.search.min||0)?this.options.filter(t=>this.isFiltered(t)).map(t=>({...t,display:this.toHighlightedString(t.text),info:this.toHighlightedString(t.value)})):this.options.map(t=>({...t,display:t.text,info:t.value}))},more(){return!this.max||this.state.lengththis.options.findIndex(e=>e.value===t.value);return t.sort((t,s)=>e(t)-e(s))},visible(){return this.limit?this.filtered.slice(0,this.search.display||this.filtered.length):this.filtered}},watch:{value(t){this.state=t,this.onInvalid()}},mounted(){this.onInvalid(),this.$events.$on("click",this.close),this.$events.$on("keydown.cmd.s",this.close)},destroyed(){this.$events.$off("click",this.close),this.$events.$off("keydown.cmd.s",this.close)},methods:{add(t){!0===this.more&&(this.state.push(t),this.onInput())},blur(){this.close()},close(){!0===this.$refs.dropdown.isOpen&&(this.$refs.dropdown.close(),this.limit=!0)},escape(){this.q?this.q=null:this.close()},focus(){this.$refs.dropdown.open()},index(t){return this.state.findIndex(e=>e.value===t.value)},isFiltered(t){return String(t.text).match(this.regex)||String(t.value).match(this.regex)},isSelected(t){return-1!==this.index(t)},navigate(t){let e=document.activeElement;switch(t){case"prev":e&&e.previousSibling&&e.previousSibling.focus&&e.previousSibling.focus();break;case"next":e&&e.nextSibling&&e.nextSibling.focus&&e.nextSibling.focus();break}},onClose(){!1===this.$refs.dropdown.isOpen&&(document.activeElement===this.$parent.$el&&(this.q=null),this.$parent.$el.focus())},onInput(){this.$emit("input",this.sorted)},onInvalid(){this.$emit("invalid",this.$v.$invalid,this.$v)},onOpen(){this.$nextTick(()=>{this.$refs.search&&this.$refs.search.focus&&this.$refs.search.focus(),this.$refs.dropdown.$el.querySelector(".k-multiselect-options").scrollTop=this.scrollTop})},remove(t){this.state.splice(this.index(t),1),this.onInput()},select(t){this.scrollTop=this.$refs.dropdown.$el.querySelector(".k-multiselect-options").scrollTop,t={text:t.text,value:t.value},this.isSelected(t)?this.remove(t):this.add(t)},toHighlightedString(t){return t=this.$helper.string.stripHTML(t),t.replace(this.regex,"$1")}},validations(){return{state:{required:!this.required||kr["required"],minLength:!this.min||Object(kr["minLength"])(this.min),maxLength:!this.max||Object(kr["maxLength"])(this.max)}}}},go=fo,ko=(s("11ae"),Object(c["a"])(go,ho,mo,!1,null,null,null)),bo=ko.exports,vo=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("input",t._g(t._b({ref:"input",staticClass:"k-number-input",attrs:{step:t.stepNumber,type:"number"},domProps:{value:t.number},on:{keydown:[function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"s",void 0,e.key,void 0)?null:e.ctrlKey?t.clean(e):null},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"s",void 0,e.key,void 0)?null:e.metaKey?t.clean(e):null}]}},"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},!1),t.listeners))},$o=[],yo={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(){return{number:this.format(this.value),stepNumber:this.format(this.step),timeout:null,listeners:{...this.$listeners,input:t=>this.onInput(t.target.value),blur:this.onBlur}}},watch:{value(t){this.number=t},number:{immediate:!0,handler(){this.onInvalid()}}},mounted(){this.$props.autofocus&&this.focus(),this.$props.preselect&&this.select()},methods:{decimals(){const t=Number(this.step||0);return Math.floor(t)===t?0:-1!==t.toString().indexOf("e")?parseInt(t.toFixed(16).split(".")[1].split("").reverse().join("")).toString().length:t.toString().split(".")[1].length||0},format(t){if(isNaN(t)||""===t)return"";const e=this.decimals();return t=e?parseFloat(t).toFixed(e):Number.isInteger(this.step)?parseInt(t):parseFloat(t),t},clean(){this.number=this.format(this.number)},emit(t){t=parseFloat(t),isNaN(t)&&(t=""),t!==this.value&&this.$emit("input",t)},focus(){this.$refs.input.focus()},onInvalid(){this.$emit("invalid",this.$v.$invalid,this.$v)},onInput(t){this.number=t,this.emit(t)},onBlur(){this.clean(),this.emit(this.number)},select(){this.$refs.input.select()}},validations(){return{value:{required:!this.required||kr["required"],min:!this.min||Object(kr["minValue"])(this.min),max:!this.max||Object(kr["maxValue"])(this.max)}}}},_o=yo,wo=(s("6018"),Object(c["a"])(_o,vo,$o,!1,null,null,null)),xo=wo.exports,Oo={extends:Gr,props:{...Gr.props,autocomplete:{type:String,default:"new-password"},type:{type:String,default:"password"}}},Co=Oo,So=Object(c["a"])(Co,to,eo,!1,null,null,null),Eo=So.exports,jo=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("ul",{staticClass:"k-radio-input",style:"--columns:"+t.columns},t._l(t.options,(function(e,i){return s("li",{key:i},[s("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(s){return t.onInput(e.value)}}}),s("label",{attrs:{for:t.id+"-"+i}},[e.info?[s("span",{staticClass:"k-radio-input-text"},[t._v(t._s(e.text))]),s("span",{staticClass:"k-radio-input-info"},[t._v(t._s(e.info))])]:[t._v(" "+t._s(e.text)+" ")]],2),e.icon?s("k-icon",{attrs:{type:e.icon}}):t._e()],1)})),0)},To=[],Lo={inheritAttrs:!1,props:{autofocus:Boolean,columns:Number,disabled:Boolean,id:{type:[Number,String],default(){return this._uid}},options:Array,required:Boolean,value:[String,Number,Boolean]},watch:{value(){this.onInvalid()}},mounted(){this.onInvalid(),this.$props.autofocus&&this.focus()},methods:{focus(){this.$el.querySelector("input").focus()},onInput(t){this.$emit("input",t)},onInvalid(){this.$emit("invalid",this.$v.$invalid,this.$v)},select(){this.focus()}},validations(){return{value:{required:!this.required||kr["required"]}}}},Io=Lo,Ao=(s("893d"),Object(c["a"])(Io,jo,To,!1,null,null,null)),Bo=Ao.exports,Do=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("label",{staticClass:"k-range-input"},[s("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?s("span",{staticClass:"k-range-input-tooltip"},[t.tooltip.before?s("span",{staticClass:"k-range-input-tooltip-before"},[t._v(t._s(t.tooltip.before))]):t._e(),s("span",{staticClass:"k-range-input-tooltip-text"},[t._v(t._s(t.label))]),t.tooltip.after?s("span",{staticClass:"k-range-input-tooltip-after"},[t._v(t._s(t.tooltip.after))]):t._e()]):t._e()])},Mo=[],No={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(){return{before:null,after:null}}},value:[Number,String]},data(){return{listeners:{...this.$listeners,input:t=>this.onInput(t.target.value)}}},computed:{baseline(){return this.min<0?0:this.min},label(){return this.required||this.value||0===this.value?this.format(this.position):"–"},position(){return this.value||0===this.value?this.value:this.default||this.baseline}},watch:{position(){this.onInvalid()}},mounted(){this.onInvalid(),this.$props.autofocus&&this.focus()},methods:{focus(){this.$refs.input.focus()},format(t){const e=document.lang?document.lang.replace("_","-"):"en",s=this.step.toString().split("."),i=s.length>1?s[1].length:0;return new Intl.NumberFormat(e,{minimumFractionDigits:i}).format(t)},onInvalid(){this.$emit("invalid",this.$v.$invalid,this.$v)},onInput(t){this.$emit("input",t)}},validations(){return{position:{required:!this.required||kr["required"],min:!this.min||Object(kr["minValue"])(this.min),max:!this.max||Object(kr["maxValue"])(this.max)}}}},Po=No,Ro=(s("b5d2"),Object(c["a"])(Po,Do,Mo,!1,null,null,null)),qo=Ro.exports,Fo=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("span",{staticClass:"k-select-input",attrs:{"data-disabled":t.disabled,"data-empty":""===t.selected}},[s("select",t._g({ref:"input",staticClass:"k-select-input-native",attrs:{id:t.id,autofocus:t.autofocus,"aria-label":t.ariaLabel,disabled:t.disabled,name:t.name,required:t.required},domProps:{value:t.selected}},t.listeners),[t.hasEmptyOption?s("option",{attrs:{disabled:t.required,value:""}},[t._v(" "+t._s(t.emptyOption)+" ")]):t._e(),t._l(t.options,(function(e){return s("option",{key:e.value,attrs:{disabled:e.disabled},domProps:{value:e.value}},[t._v(" "+t._s(e.text)+" ")])}))],2),t._v(" "+t._s(t.label)+" ")])},Uo=[],zo={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:()=>[]},required:Boolean,value:{type:[String,Number,Boolean],default:""}},data(){return{selected:this.value,listeners:{...this.$listeners,click:t=>this.onClick(t),change:t=>this.onInput(t.target.value),input:()=>{}}}},computed:{emptyOption(){return this.placeholder||"—"},hasEmptyOption(){return!1!==this.empty&&!(this.required&&this.default)},label(){const t=this.text(this.selected);return""===this.selected||null===this.selected||null===t?this.emptyOption:t}},watch:{value(t){this.selected=t,this.onInvalid()}},mounted(){this.onInvalid(),this.$props.autofocus&&this.focus()},methods:{focus(){this.$refs.input.focus()},onClick(t){t.stopPropagation(),this.$emit("click",t)},onInvalid(){this.$emit("invalid",this.$v.$invalid,this.$v)},onInput(t){this.selected=t,this.$emit("input",this.selected)},select(){this.focus()},text(t){let e=null;return this.options.forEach(s=>{s.value==t&&(e=s.text)}),e}},validations(){return{selected:{required:!this.required||kr["required"]}}}},Ho=zo,Ko=(s("6a18"),Object(c["a"])(Ho,Fo,Uo,!1,null,null,null)),Go=Ko.exports,Yo=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-draggable",{ref:"box",staticClass:"k-tags-input",attrs:{list:t.tags,"data-layout":t.layout,options:t.dragOptions,dir:t.direction},on:{end:t.onInput}},[t._l(t.tags,(function(e,i){return s("k-tag",{key:i,ref:e.value,refInFor:!0,attrs:{removable:!t.disabled,name:"tag"},on:{remove:function(s){return t.remove(e)}},nativeOn:{click:function(t){t.stopPropagation()},blur:function(e){return t.selectTag(null)},focus:function(s){return t.selectTag(e)},keydown:[function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"left",37,e.key,["Left","ArrowLeft"])||"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"])||"button"in e&&2!==e.button?null:t.navigate("next")}],dblclick:function(s){return t.edit(e)}}},[t._v(" "+t._s(e.text)+" ")])})),s("span",{staticClass:"k-tags-input-element",attrs:{slot:"footer"},slot:"footer"},[s("k-autocomplete",{ref:"autocomplete",attrs:{options:t.options,skip:t.skip},on:{select:t.addTag,leave:function(e){return t.$refs.input.focus()}}},[s("input",{directives:[{name:"model",rawName:"v-model.trim",value:t.newTag,expression:"newTag",modifiers:{trim:!0}}],ref:"input",attrs:{id:t.id,autofocus:t.autofocus,disabled:t.disabled||t.max&&t.tags.length>=t.max,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"])||"button"in e&&0!==e.button||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")||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")||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)||e.ctrlKey||e.shiftKey||e.altKey||e.metaKey?null:t.leaveInput(e)}]}})])],1)],2)},Wo=[],Vo={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(){return[]}},required:Boolean,separator:{type:String,default:","},value:{type:Array,default(){return[]}}},data(){return{tags:this.prepareTags(this.value),selected:null,newTag:null,tagOptions:this.options.map(t=>(this.icon&&this.icon.length>0&&(t.icon=this.icon),t),this)}},computed:{direction(){return Ur(this)},dragOptions(){return{delay:1,disabled:!this.draggable,draggable:".k-tag"}},draggable(){return this.tags.length>1},skip(){return this.tags.map(t=>t.value)}},watch:{value(t){this.tags=this.prepareTags(t),this.onInvalid()}},mounted(){this.onInvalid(),this.$props.autofocus&&this.focus()},methods:{addString(t){if(t)if(t=t.trim(),t.includes(this.separator))t.split(this.separator).forEach(t=>{this.addString(t)});else if(0!==t.length)if("options"===this.accept){const e=this.options.filter(e=>e.text===t)[0];if(!e)return;this.addTag(e)}else this.addTag({text:t,value:t})},addTag(t){this.addTagToIndex(t),this.$refs.autocomplete.close(),this.$refs.input.focus()},addTagToIndex(t){if("options"===this.accept){const e=this.options.filter(e=>e.value===t.value)[0];if(!e)return}-1===this.index(t)&&(!this.max||this.tags.length=this.tags.length)return;break;case"first":e=0;break;case"last":e=this.tags.length-1;break;default:e=t;break}let i=this.tags[e];if(i){let t=this.$refs[i.value];if(t&&t[0])return{ref:t[0],tag:i,index:e}}return!1},index(t){return this.tags.findIndex(e=>e.value===t.value)},onInput(){this.$emit("input",this.tags)},onInvalid(){this.$emit("invalid",this.$v.$invalid,this.$v)},leaveInput(t){0===t.target.selectionStart&&t.target.selectionStart===t.target.selectionEnd&&0!==this.tags.length&&(this.$refs.autocomplete.close(),this.navigate("last"),t.preventDefault())},navigate(t){var e=this.get(t);e?(e.ref.focus(),this.selectTag(e.tag)):"next"===t&&(this.$refs.input.focus(),this.selectTag(null))},prepareTags(t){return!1===Array.isArray(t)?[]:t.map(t=>"string"===typeof t?{text:t,value:t}:t)},remove(t){const e=this.get("prev"),s=this.get("next");this.tags.splice(this.index(t),1),this.onInput(),e?(this.selectTag(e.tag),e.ref.focus()):s?this.selectTag(s.tag):(this.selectTag(null),this.$refs.input.focus())},select(){this.focus()},selectTag(t){this.selected=t},tab(t){this.newTag&&this.newTag.length>0&&(t.preventDefault(),this.addString(this.newTag))},type(t){this.newTag=t,this.$refs.autocomplete.search(t)}},validations(){return{tags:{required:!this.required||kr["required"],minLength:!this.min||Object(kr["minLength"])(this.min),maxLength:!this.max||Object(kr["maxLength"])(this.max)}}}},Jo=Vo,Zo=(s("27c1"),Object(c["a"])(Jo,Yo,Wo,!1,null,null,null)),Xo=Zo.exports,Qo={extends:Gr,props:{...Gr.props,autocomplete:{type:String,default:"tel"},type:{type:String,default:"tel"}}},tl=Qo,el=Object(c["a"])(tl,so,io,!1,null,null,null),sl=el.exports,il=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",{staticClass:"k-textarea-input",attrs:{"data-theme":t.theme,"data-over":t.over}},[s("div",{staticClass:"k-textarea-input-wrapper"},[t.buttons&&!t.disabled?s("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(),s("textarea",t._b({ref:"input",staticClass:"k-textarea-input-native",attrs:{"data-font":t.font,"data-size":t.size,dir:t.direction},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.type.indexOf("key")&&t._k(e.keyCode,"enter",13,e.key,"Enter")?null:e.ctrlKey?t.onSubmit(e):null},function(e){return e.metaKey?t.onShortcut(e):null},function(e){return e.ctrlKey?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),s("k-toolbar-email-dialog",{ref:"emailDialog",on:{cancel:t.cancel,submit:function(e){return t.insert(e)}}}),s("k-toolbar-link-dialog",{ref:"linkDialog",on:{cancel:t.cancel,submit:function(e){return t.insert(e)}}}),s("k-files-dialog",{ref:"fileDialog",on:{cancel:t.cancel,submit:function(e){return t.insertFile(e)}}}),t.uploads?s("k-upload",{ref:"fileUpload",on:{success:t.insertUpload}}):t._e()],1)},nl=[],al={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(){return{over:!1}},computed:{direction(){return Ur(this)}},watch:{value(){this.onInvalid(),this.$nextTick(()=>{this.resize()})}},mounted(){this.$nextTick(()=>{this.$library.autosize(this.$refs.input)}),this.onInvalid(),this.$props.autofocus&&this.focus(),this.$props.preselect&&this.select()},methods:{cancel(){this.$refs.input.focus()},dialog(t){if(!this.$refs[t+"Dialog"])throw"Invalid toolbar dialog";this.$refs[t+"Dialog"].open(this.$refs.input,this.selection())},focus(){this.$refs.input.focus()},insert(t){const e=this.$refs.input,s=e.value;setTimeout(()=>{if(e.focus(),document.execCommand("insertText",!1,t),e.value===s){const s=e.value.slice(0,e.selectionStart)+t+e.value.slice(e.selectionEnd);e.value=s,this.$emit("input",s)}}),this.resize()},insertFile(t){t&&t.length>0&&this.insert(t.map(t=>t.dragText).join("\n\n"))},insertUpload(t,e){this.insert(e.map(t=>t.dragText).join("\n\n")),this.$events.$emit("model.update")},onClick(){this.$refs.toolbar&&this.$refs.toolbar.close()},onCommand(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(t){if(this.uploads&&this.$helper.isUploadEvent(t))return this.$refs.fileUpload.drop(t.dataTransfer.files,{url:O.api+"/"+this.endpoints.field+"/upload",multiple:!1});const e=this.$store.state.drag;e&&"text"===e.type&&(this.focus(),this.insert(e.data))},onFocus(t){this.$emit("focus",t)},onInput(t){this.$emit("input",t.target.value)},onInvalid(){this.$emit("invalid",this.$v.$invalid,this.$v)},onOut(){this.$refs.input.blur(),this.over=!1},onOver(t){if(this.uploads&&this.$helper.isUploadEvent(t))return t.dataTransfer.dropEffect="copy",this.focus(),void(this.over=!0);const e=this.$store.state.drag;e&&"text"===e.type&&(t.dataTransfer.dropEffect="copy",this.focus(),this.over=!0)},onShortcut(t){!1!==this.buttons&&"Meta"!==t.key&&"Control"!==t.key&&this.$refs.toolbar&&this.$refs.toolbar.shortcut(t.key,t)},onSubmit(t){return this.$emit("submit",t)},prepend(t){this.insert(t+" "+this.selection())},resize(){this.$library.autosize.update(this.$refs.input)},select(){this.$refs.select()},selectFile(){this.$refs.fileDialog.open({endpoint:this.endpoints.field+"/files",multiple:!1})},selection(){const t=this.$refs.input,e=t.selectionStart,s=t.selectionEnd;return t.value.substring(e,s)},uploadFile(){this.$refs.fileUpload.open({url:O.api+"/"+this.endpoints.field+"/upload",multiple:!1})},wrap(t){this.insert(t+this.selection()+t)}},validations(){return{value:{required:!this.required||kr["required"],minLength:!this.minlength||Object(kr["minLength"])(this.minlength),maxLength:!this.maxlength||Object(kr["maxLength"])(this.maxlength)}}}},rl=al,ol=(s("cca8"),Object(c["a"])(rl,il,nl,!1,null,null,null)),ll=ol.exports,cl={extends:Ar,props:{display:{type:String,default:"HH:mm"},max:String,min:String,notation:{type:Number,default:24},step:{type:Object,default(){return{size:5,unit:"minute"}}},type:{type:String,default:"time"}},computed:{patterns(){let t=Ar.computed.patterns.apply(this);return 12===this.notation&&(t=t.map(t=>t+"a").concat(t)),t}},methods:{toDatetime(t){const e=["HH:mm:ss","YYYY-MM-DD HH:mm:ss"];for(let s=0;s0?"mailto:"+this.value:null}},methods:{focus(){this.$refs.input.focus()}}},Hl=zl,Kl=Object(c["a"])(Hl,Fl,Ul,!1,null,null,null),Gl=Kl.exports,Yl=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-field",t._b({staticClass:"k-files-field"},"k-field",t.$props,!1),[t.more&&!t.disabled?s("template",{slot:"options"},[s("k-button-group",{staticClass:"k-field-options"},[t.uploads?[s("k-dropdown",[s("k-button",{ref:"pickerToggle",staticClass:"k-field-options-button",attrs:{icon:t.btnIcon},on:{click:t.prompt}},[t._v(" "+t._s(t.btnLabel)+" ")]),s("k-dropdown-content",{ref:"picker",attrs:{align:"right"}},[s("k-dropdown-item",{attrs:{icon:"check"},on:{click:t.open}},[t._v(" "+t._s(t.$t("select"))+" ")]),s("k-dropdown-item",{attrs:{icon:"upload"},on:{click:t.upload}},[t._v(" "+t._s(t.$t("upload"))+" ")])],1)],1)]:[s("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?[s("k-draggable",{attrs:{element:t.elements.list,list:t.selected,"data-size":t.size,handle:!0,"data-invalid":t.isInvalid},on:{end:t.onInput}},t._l(t.selected,(function(e,i){return s(t.elements.item,{key:e.id,tag:"component",attrs:{sortable:!t.disabled&&t.selected.length>1,text:e.text,link:t.link?e.link:null,info:e.info,image:e.image,icon:e.icon}},[t.disabled?t._e():s("k-button",{attrs:{slot:"options",tooltip:t.$t("remove"),icon:"remove"},on:{click:function(e){return t.remove(i)}},slot:"options"})],1)})),1)]:s("k-empty",{attrs:{layout:t.layout,"data-invalid":t.isInvalid,icon:"image"},on:{click:t.prompt}},[t._v(" "+t._s(t.empty||t.$t("field.files.empty"))+" ")]),s("k-files-dialog",{ref:"selector",on:{submit:t.select}}),s("k-upload",{ref:"fileUpload",on:{success:t.selectUpload}})],2)},Wl=[],Vl={inheritAttrs:!1,props:{...$n.props,empty:String,info:String,link:Boolean,layout:String,max:Number,multiple:Boolean,parent:String,search:Boolean,size:String,text:String,value:{type:Array,default(){return[]}}},data(){return{selected:this.value}},computed:{btnIcon(){return!this.multiple&&this.selected.length>0?"refresh":"add"},btnLabel(){return!this.multiple&&this.selected.length>0?this.$t("change"):this.$t("add")},elements(){const 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"]},isInvalid(){return!(!this.required||0!==this.selected.length)||(!!(this.min&&this.selected.lengththis.max))},more(){return!this.max||this.max>this.selected.length}},watch:{value(t){this.selected=t}},methods:{focus(){},onInput(){this.$emit("input",this.selected)},remove(t){this.selected.splice(t,1),this.onInput()},removeById(t){this.selected=this.selected.filter(e=>e.id!==t),this.onInput()},select(t){0!==t.length?(this.selected=this.selected.filter(e=>t.filter(t=>t.id===e.id).length>0),t.forEach(t=>{0===this.selected.filter(e=>t.id===e.id).length&&this.selected.push(t)}),this.onInput()):this.selected=[]}}},Jl={mixins:[Vl],props:{uploads:[Boolean,Object,Array]},created(){this.$events.$on("file.delete",this.removeById)},destroyed(){this.$events.$off("file.delete",this.removeById)},methods:{prompt(t){t.stopPropagation(),this.uploads?this.$refs.picker.toggle():this.open()},open(){if(this.disabled)return!1;this.$refs.selector.open({endpoint:this.endpoints.field,max:this.max,multiple:this.multiple,search:this.search,selected:this.selected.map(t=>t.id)})},selectUpload(t,e){!1===this.multiple&&(this.selected=[]),e.forEach(t=>{this.selected.push(t)}),this.onInput(),this.$events.$emit("model.update")},upload(){this.$refs.fileUpload.open({url:O.api+"/"+this.endpoints.field+"/upload",multiple:this.multiple,accept:this.uploads.accept})}}},Zl=Jl,Xl=(s("4a4b"),Object(c["a"])(Zl,Yl,Wl,!1,null,null,null)),Ql=Xl.exports,tc=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",{staticClass:"k-field k-gap-field"})},ec=[],sc={},ic=Object(c["a"])(sc,tc,ec,!1,null,null,null),nc=ic.exports,ac=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",{staticClass:"k-headline-field"},[s("k-headline",{attrs:{"data-numbered":t.numbered,size:"large"}},[t._v(" "+t._s(t.label)+" ")]),t.help?s("footer",{staticClass:"k-field-footer"},[t.help?s("k-text",{staticClass:"k-field-help",attrs:{theme:"help"},domProps:{innerHTML:t._s(t.help)}}):t._e()],1):t._e()],1)},rc=[],oc={props:{help:String,label:String,numbered:Boolean}},lc=oc,cc=(s("19d7"),Object(c["a"])(lc,ac,rc,!1,null,null,null)),uc=cc.exports,dc=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",{staticClass:"k-field k-info-field"},[s("k-headline",[t._v(t._s(t.label))]),s("k-box",{attrs:{theme:t.theme}},[s("k-text",{domProps:{innerHTML:t._s(t.text)}})],1),t.help?s("footer",{staticClass:"k-field-footer"},[t.help?s("k-text",{staticClass:"k-field-help",attrs:{theme:"help"},domProps:{innerHTML:t._s(t.help)}}):t._e()],1):t._e()],1)},pc=[],hc={props:{help:String,label:String,text:String,theme:{type:String,default:"info"}}},mc=hc,fc=(s("ddfd"),Object(c["a"])(mc,dc,pc,!1,null,null,null)),gc=fc.exports,kc=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-field",t._b({staticClass:"k-layout-field"},"k-field",t.$props,!1),[s("k-block-layouts",t._b({on:{input:function(e){return t.$emit("input",e)}}},"k-block-layouts",t.$props,!1))],1)},bc=[],vc=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",[t.rows.length?[s("k-draggable",t._b({staticClass:"k-layouts",on:{sort:t.save}},"k-draggable",t.draggableOptions,!1),t._l(t.rows,(function(e,i){return s("k-layout",t._b({key:e.id,attrs:{endpoints:t.endpoints,"fieldset-groups":t.fieldsetGroups,fieldsets:t.fieldsets,"is-selected":t.selected===e.id,settings:t.settings},on:{append:function(e){return t.selectLayout(i+1)},duplicate:function(s){return t.duplicateLayout(i,e)},prepend:function(e){return t.selectLayout(i)},remove:function(s){return t.removeLayout(e)},select:function(s){t.selected=e.id},updateAttrs:function(e){return t.updateAttrs(i,e)},updateColumn:function(s){return t.updateColumn(Object.assign({},{layout:e,layoutIndex:i},s))}}},"k-layout",e,!1))})),1),s("k-button",{staticClass:"k-layout-add-button",attrs:{icon:"add"},on:{click:function(e){return t.selectLayout(t.rows.length)}}})]:[s("k-empty",{staticClass:"k-layout-empty",attrs:{icon:"dashboard"},on:{click:function(e){return t.selectLayout(0)}}},[t._v(" "+t._s(t.empty||t.$t("field.layout.empty"))+" ")])],s("k-dialog",{ref:"selector",staticClass:"k-layout-selector",attrs:{"cancel-button":!1,"submit-button":!1,size:"medium"}},[s("k-headline",[t._v(t._s(t.$t("field.layout.select")))]),s("ul",t._l(t.layouts,(function(e,i){return s("li",{key:i,staticClass:"k-layout-selector-option"},[s("k-grid",{nativeOn:{click:function(s){return t.addLayout(e)}}},t._l(e,(function(t,e){return s("k-column",{key:e,attrs:{width:t}})})),1)],1)})),0)],1)],2)},$c=[],yc=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("section",{staticClass:"k-layout",attrs:{"data-selected":t.isSelected,tabindex:"0"},on:{click:function(e){return t.$emit("select")}}},[s("k-grid",{staticClass:"k-layout-columns"},t._l(t.columns,(function(e,i){return s("k-layout-column",t._b({key:e.id,attrs:{endpoints:t.endpoints,"fieldset-groups":t.fieldsetGroups,fieldsets:t.fieldsets},on:{input:function(s){return t.$emit("updateColumn",{column:e,columnIndex:i,blocks:s})}}},"k-layout-column",e,!1))})),1),s("nav",{staticClass:"k-layout-toolbar"},[t.settings?s("k-button",{staticClass:"k-layout-toolbar-button",attrs:{tooltip:t.$t("settings"),icon:"settings"},on:{click:function(e){return t.$refs.drawer.open()}}}):t._e(),s("k-dropdown",[s("k-button",{staticClass:"k-layout-toolbar-button",attrs:{icon:"angle-down"},on:{click:function(e){return t.$refs.options.toggle()}}}),s("k-dropdown-content",{ref:"options",attrs:{align:"right"}},[s("k-dropdown-item",{attrs:{icon:"angle-up"},on:{click:function(e){return t.$emit("prepend")}}},[t._v(" "+t._s(t.$t("insert.before"))+" ")]),s("k-dropdown-item",{attrs:{icon:"angle-down"},on:{click:function(e){return t.$emit("append")}}},[t._v(" "+t._s(t.$t("insert.after"))+" ")]),s("hr"),t.settings?s("k-dropdown-item",{attrs:{icon:"settings"},on:{click:function(e){return t.$refs.drawer.open()}}},[t._v(" "+t._s(t.$t("settings"))+" ")]):t._e(),s("k-dropdown-item",{attrs:{icon:"copy"},on:{click:function(e){return t.$emit("duplicate")}}},[t._v(" "+t._s(t.$t("duplicate"))+" ")]),s("hr"),s("k-dropdown-item",{attrs:{icon:"trash"},on:{click:function(e){return t.$refs.confirmRemoveDialog.open()}}},[t._v(" "+t._s(t.$t("field.layout.delete"))+" ")])],1)],1),s("k-sort-handle")],1),t.settings?s("k-form-drawer",{ref:"drawer",staticClass:"k-layout-drawer",attrs:{tabs:t.tabs,title:t.$t("settings"),value:t.attrs,icon:"settings"},on:{input:function(e){return t.$emit("updateAttrs",e)}}}):t._e(),s("k-remove-dialog",{ref:"confirmRemoveDialog",attrs:{text:t.$t("field.layout.delete.confirm")},on:{submit:function(e){return t.$emit("remove")}}})],1)},_c=[],wc=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",{staticClass:"k-column k-layout-column",attrs:{id:t.id,"data-width":t.width,tabindex:"0"},on:{dblclick:function(e){return t.$refs.blocks.choose(t.blocks.length)}}},[s("k-blocks",{ref:"blocks",attrs:{endpoints:t.endpoints,"fieldset-groups":t.fieldsetGroups,fieldsets:t.fieldsets,value:t.blocks,group:"layout"},on:{input:function(e){return t.$emit("input",e)}},nativeOn:{dblclick:function(t){t.stopPropagation()}}})],1)},xc=[],Oc={props:{blocks:Array,endpoints:Object,fieldsetGroups:Object,fieldsets:Object,id:String,isSelected:Boolean,width:String}},Cc=Oc,Sc=(s("e791"),Object(c["a"])(Cc,wc,xc,!1,null,null,null)),Ec=Sc.exports,jc={components:{"k-layout-column":Ec},props:{attrs:[Array,Object],columns:Array,endpoints:Object,fieldsetGroups:Object,fieldsets:Object,id:String,isSelected:Boolean,settings:Object},computed:{tabs(){let t=this.settings.tabs;return Object.entries(t).forEach(([e,s])=>{Object.entries(s.fields).forEach(([s])=>{t[e].fields[s].endpoints={field:this.endpoints.field+"/fields/"+s,section:this.endpoints.section,model:this.endpoints.model}})}),t}}},Tc=jc,Lc=(s("170b"),Object(c["a"])(Tc,yc,_c,!1,null,null,null)),Ic=Lc.exports,Ac={components:{"k-layout":Ic},props:{empty:String,endpoints:Object,fieldsetGroups:Object,fieldsets:Object,layouts:Array,max:Number,settings:Object,value:Array},data(){return{currentLayout:null,nextIndex:null,rows:this.value,selected:null}},computed:{draggableOptions(){return{id:this._uid,handle:!0,list:this.rows}}},watch:{value(){this.rows=this.value}},methods:{async addLayout(t){let e=await this.$api.post(this.endpoints.field+"/layout",{columns:t});this.rows.splice(this.nextIndex,0,e),this.layouts.length>1&&this.$refs.selector.close(),this.save()},duplicateLayout(t,e){let s={...this.$helper.clone(e),id:this.$helper.uuid()};s.columns=s.columns.map(t=>(t.id=this.$helper.uuid(),t.blocks=t.blocks.map(t=>(t.id=this.$helper.uuid(),t)),t)),this.rows.splice(t+1,0,s),this.save()},removeLayout(t){const e=this.rows.findIndex(e=>e.id===t.id);-1!==e&&this.$delete(this.rows,e),this.save()},save(){this.$emit("input",this.rows)},selectLayout(t){this.nextIndex=t,1!==this.layouts.length?this.$refs.selector.open():this.addLayout(this.layouts[0])},updateColumn(t){this.rows[t.layoutIndex].columns[t.columnIndex].blocks=t.blocks,this.save()},updateAttrs(t,e){this.rows[t].attrs=e,this.save()}}},Bc=Ac,Dc=(s("a659"),Object(c["a"])(Bc,vc,$c,!1,null,null,null)),Mc=Dc.exports,Nc={components:{"k-block-layouts":Mc},inheritAttrs:!1,props:{...$n.props,empty:String,fieldsetGroups:Object,fieldsets:Object,layouts:{type:Array,default(){return[["1/1"]]}},settings:Object,value:{type:Array,default(){return[]}}}},Pc=Nc,Rc=Object(c["a"])(Pc,kc,bc,!1,null,null,null),qc=Rc.exports,Fc=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("hr",{staticClass:"k-line-field"})},Uc=[],zc=(s("718c"),{}),Hc=Object(c["a"])(zc,Fc,Uc,!1,null,null,null),Kc=Hc.exports,Gc=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-field",t._b({staticClass:"k-list-field",attrs:{input:t._uid,counter:!1}},"k-field",t.$props,!1),[s("k-input",{ref:"input",attrs:{id:t._uid,marks:t.marks,value:t.value,type:"list",theme:"field"},on:{input:function(e){return t.$emit("input",e)}}})],1)},Yc=[],Wc={inheritAttrs:!1,props:{...$n.props,...In.props,marks:[Array,Boolean],value:String},methods:{focus(){this.$refs.input.focus()}}},Vc=Wc,Jc=(s("116a"),Object(c["a"])(Vc,Gc,Yc,!1,null,null,null)),Zc=Jc.exports,Xc=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-field",t._b({staticClass:"k-multiselect-field",attrs:{input:t._uid,counter:t.counterOptions},on:{blur:t.blur},nativeOn:{keydown:function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"enter",13,e.key,"Enter")?null:(e.preventDefault(),t.focus(e))}}},"k-field",t.$props,!1),[s("k-input",t._g(t._b({ref:"input",attrs:{id:t._uid,theme:"field",type:"multiselect"}},"k-input",t.$props,!1),t.$listeners))],1)},Qc=[],tu={inheritAttrs:!1,props:{...$n.props,...In.props,...bo.props,counter:{type:Boolean,default:!0},icon:{type:String,default:"angle-down"}},computed:{counterOptions(){return null!==this.value&&!this.disabled&&!1!==this.counter&&{count:this.value&&Array.isArray(this.value)?this.value.length:0,min:this.min,max:this.max}}},mounted(){this.$refs.input.$el.setAttribute("tabindex",0)},methods:{blur(t){this.$refs.input.blur(t)},focus(){this.$refs.input.focus()}}},eu=tu,su=Object(c["a"])(eu,Xc,Qc,!1,null,null,null),iu=su.exports,nu=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-field",t._b({staticClass:"k-number-field",attrs:{input:t._uid}},"k-field",t.$props,!1),[s("k-input",t._g(t._b({ref:"input",attrs:{id:t._uid,theme:"field",type:"number"}},"k-input",t.$props,!1),t.$listeners))],1)},au=[],ru={inheritAttrs:!1,props:{...$n.props,...In.props,...xo.props},methods:{focus(){this.$refs.input.focus()}}},ou=ru,lu=Object(c["a"])(ou,nu,au,!1,null,null,null),cu=lu.exports,uu=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-field",t._b({staticClass:"k-pages-field"},"k-field",t.$props,!1),[s("k-button-group",{staticClass:"k-field-options",attrs:{slot:"options"},slot:"options"},[t.more&&!t.disabled?s("k-button",{staticClass:"k-field-options-button",attrs:{icon:t.btnIcon},on:{click:t.open}},[t._v(" "+t._s(t.btnLabel)+" ")]):t._e()],1),t.selected.length?[s("k-draggable",{attrs:{element:t.elements.list,handle:!0,list:t.selected,"data-size":t.size,"data-invalid":t.isInvalid},on:{end:t.onInput}},t._l(t.selected,(function(e,i){return s(t.elements.item,{key:e.id,tag:"component",attrs:{sortable:!t.disabled&&t.selected.length>1,text:e.text,info:e.info,link:t.link?e.link:null,icon:e.icon,image:e.image}},[t.disabled?t._e():s("k-button",{attrs:{slot:"options",icon:"remove"},on:{click:function(e){return t.remove(i)}},slot:"options"})],1)})),1)]:s("k-empty",{attrs:{layout:t.layout,"data-invalid":t.isInvalid,icon:"page"},on:{click:t.open}},[t._v(" "+t._s(t.empty||t.$t("field.pages.empty"))+" ")]),s("k-pages-dialog",{ref:"selector",on:{submit:t.select}})],2)},du=[],pu={mixins:[Vl],methods:{open(){if(this.disabled)return!1;this.$refs.selector.open({endpoint:this.endpoints.field,max:this.max,multiple:this.multiple,search:this.search,selected:this.selected.map(t=>t.id)})}}},hu=pu,mu=(s("7e85"),Object(c["a"])(hu,uu,du,!1,null,null,null)),fu=mu.exports,gu=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-field",t._b({staticClass:"k-password-field",attrs:{input:t._uid,counter:t.counterOptions}},"k-field",t.$props,!1),[t._t("options",null,{slot:"options"}),s("k-input",t._g(t._b({ref:"input",attrs:{id:t._uid,theme:"field",type:"password"}},"k-input",t.$props,!1),t.$listeners))],2)},ku=[],bu={inheritAttrs:!1,props:{...$n.props,...In.props,...Eo.props,counter:{type:Boolean,default:!0},minlength:{type:Number,default:8},icon:{type:String,default:"key"}},computed:{counterOptions(){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(){this.$refs.input.focus()}}},vu=bu,$u=Object(c["a"])(vu,gu,ku,!1,null,null,null),yu=$u.exports,_u=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-field",t._b({staticClass:"k-radio-field"},"k-field",t.$props,!1),[s("k-input",t._g(t._b({ref:"input",attrs:{id:t._uid,theme:"field",type:"radio"}},"k-input",t.$props,!1),t.$listeners))],1)},wu=[],xu={inheritAttrs:!1,props:{...$n.props,...In.props,...Bo.props},methods:{focus(){this.$refs.input.focus()}}},Ou=xu,Cu=Object(c["a"])(Ou,_u,wu,!1,null,null,null),Su=Cu.exports,Eu=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-field",t._b({staticClass:"k-range-field",attrs:{input:t._uid}},"k-field",t.$props,!1),[s("k-input",t._g(t._b({ref:"input",attrs:{id:t._uid,theme:"field",type:"range"}},"k-input",t.$props,!1),t.$listeners))],1)},ju=[],Tu={inheritAttrs:!1,props:{...$n.props,...In.props,...qo.props},methods:{focus(){this.$refs.input.focus()}}},Lu=Tu,Iu=Object(c["a"])(Lu,Eu,ju,!1,null,null,null),Au=Iu.exports,Bu=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-field",t._b({staticClass:"k-select-field",attrs:{input:t._uid}},"k-field",t.$props,!1),[s("k-input",t._g(t._b({ref:"input",attrs:{id:t._uid,theme:"field",type:"select"}},"k-input",t.$props,!1),t.$listeners))],1)},Du=[],Mu={inheritAttrs:!1,props:{...$n.props,...In.props,...Go.props,icon:{type:String,default:"angle-down"}},methods:{focus(){this.$refs.input.focus()}}},Nu=Mu,Pu=Object(c["a"])(Nu,Bu,Du,!1,null,null,null),Ru=Pu.exports,qu=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-field",t._b({staticClass:"k-structure-field",nativeOn:{click:function(t){t.stopPropagation()}}},"k-field",t.$props,!1),[s("template",{slot:"options"},[t.more&&null===t.currentIndex?s("k-button",{ref:"add",attrs:{id:t._uid,icon:"add"},on:{click:t.add}},[t._v(" "+t._s(t.$t("add"))+" ")]):t._e()],1),null!==t.currentIndex?[s("div",{staticClass:"k-structure-backdrop",on:{click:t.escape}}),s("section",{staticClass:"k-structure-form"},[s("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"}}),s("footer",{staticClass:"k-structure-form-buttons"},[s("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?s("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(),s("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?s("k-empty",{attrs:{"data-invalid":t.isInvalid,icon:"list-bullet"},on:{click:t.add}},[t._v(" "+t._s(t.empty||t.$t("field.structure.empty"))+" ")]):[s("table",{staticClass:"k-structure-table",attrs:{"data-invalid":t.isInvalid,"data-sortable":t.isSortable}},[s("thead",[s("tr",[s("th",{staticClass:"k-structure-table-index"},[t._v(" # ")]),t._l(t.columns,(function(e,i){return s("th",{key:i+"-header",staticClass:"k-structure-table-column",style:"width:"+t.width(e.width),attrs:{"data-align":e.align}},[t._v(" "+t._s(e.label)+" ")])})),s("th")],2)]),s("k-draggable",{attrs:{list:t.items,"data-disabled":t.disabled,options:t.dragOptions,handle:!0,dir:t.direction,element:"tbody"},on:{end:t.onInput}},t._l(t.paginatedItems,(function(e,i){return s("tr",{key:i,on:{click:function(t){t.stopPropagation()}}},[s("td",{staticClass:"k-structure-table-index"},[t.isSortable?s("k-sort-handle"):t._e(),s("span",{staticClass:"k-structure-table-index-number"},[t._v(t._s(t.indexOf(i)))])],1),t._l(t.columns,(function(n,a){return s("td",{key:a,staticClass:"k-structure-table-column",style:"width:"+t.width(n.width),attrs:{title:n.label,"data-align":n.align},on:{click:function(e){return t.jump(i,a)}}},[!1===t.columnIsEmpty(e[a])?[t.previewExists(n.type)?s("k-"+n.type+"-field-preview",{tag:"component",attrs:{value:e[a],column:n,field:t.fields[a]},on:{input:function(e){return t.update(i,a,e)}}}):[s("p",{staticClass:"k-structure-table-text"},[t._v(" "+t._s(n.before)+" "+t._s(t.displayText(t.fields[a],e[a])||"–")+" "+t._s(n.after)+" ")])]]:t._e()],2)})),s("td",{staticClass:"k-structure-table-options"},[t.duplicate&&t.more&&null===t.currentIndex?[s("k-button",{key:i,ref:"actionsToggle",refInFor:!0,staticClass:"k-structure-table-options-button",attrs:{icon:"dots"},on:{click:function(e){t.$refs[i+"-actions"][0].toggle()}}}),s("k-dropdown-content",{ref:i+"-actions",refInFor:!0,attrs:{align:"right"}},[s("k-dropdown-item",{attrs:{icon:"copy"},on:{click:function(e){return t.duplicateItem(i)}}},[t._v(" "+t._s(t.$t("duplicate"))+" ")]),s("k-dropdown-item",{attrs:{icon:"remove"},on:{click:function(e){return t.confirmRemove(i)}}},[t._v(" "+t._s(t.$t("remove"))+" ")])],1)]:[s("k-button",{staticClass:"k-structure-table-options-button",attrs:{tooltip:t.$t("remove"),icon:"remove"},on:{click:function(e){return t.confirmRemove(i)}}})]],2)],2)})),0)],1),t.limit?s("k-pagination",t._b({on:{paginate:t.paginateItems}},"k-pagination",t.pagination,!1)):t._e(),t.disabled?t._e():s("k-dialog",{ref:"remove",attrs:{"submit-button":t.$t("delete"),theme:"negative"},on:{submit:t.remove}},[s("k-text",[t._v(t._s(t.$t("field.structure.delete.confirm")))])],1)]],2)},Fu=[],Uu={inheritAttrs:!1,props:{...$n.props,columns:Object,duplicate:{type:Boolean,default:!0},empty:String,fields:Object,limit:Number,max:Number,min:Number,prepend:{type:Boolean,default:!1},sortable:{type:Boolean,default:!0},sortBy:String,value:{type:Array,default(){return[]}}},data(){return{items:this.makeItems(this.value),currentIndex:null,currentModel:null,trash:null,page:1}},computed:{direction(){return Ur(this)},dragOptions(){return{disabled:!this.isSortable,fallbackClass:"k-sortable-row-fallback"}},formFields(){let t={};return Object.keys(this.fields).forEach(e=>{let s=this.fields[e];s.section=this.name,s.endpoints={field:this.endpoints.field+"+"+e,section:this.endpoints.section,model:this.endpoints.model},t[e]=s}),t},more(){return!0!==this.disabled&&!(this.max&&this.items.length>=this.max)},isInvalid(){return!0!==this.disabled&&(!!(this.min&&this.items.lengththis.max))},isSortable(){return!this.sortBy&&(!this.limit&&(!0!==this.disabled&&(!(this.items.length<=1)&&!1!==this.sortable)))},pagination(){let 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(){return this.limit?this.items.slice(this.pagination.offset,this.pagination.offset+this.limit):this.items}},watch:{value(t){t!=this.items&&(this.items=this.makeItems(t))}},methods:{add(){if(!0===this.disabled)return!1;if(null!==this.currentIndex)return this.escape(),!1;let t={};Object.keys(this.fields).forEach(e=>{const s=this.fields[e];null!==s.default?t[e]=this.$helper.clone(s.default):t[e]=null}),this.currentIndex="new",this.currentModel=t,this.createForm()},addItem(t){!0===this.prepend?this.items.unshift(t):this.items.push(t)},beforePaginate(){return this.save(this.currentModel)},close(){this.currentIndex=null,this.currentModel=null,this.$events.$off("keydown.esc",this.escape),this.$events.$off("keydown.cmd.s",this.submit),this.$store.dispatch("content/enable")},columnIsEmpty(t){return void 0===t||null===t||""===t||("object"===typeof t&&0===Object.keys(t).length&&t.constructor===Object||void 0!==t.length&&0===t.length)},confirmRemove(t){this.close(),this.trash=t+this.pagination.offset,this.$refs.remove.open()},createForm(t){this.$events.$on("keydown.esc",this.escape),this.$events.$on("keydown.cmd.s",this.submit),this.$store.dispatch("content/disable"),this.$nextTick(()=>{this.$refs.form&&this.$refs.form.focus(t)})},displayText(t,e){switch(t.type){case"user":return e.email;case"date":{const s=this.$library.dayjs(e),i=!0===t.time?"YYYY-MM-DD HH:mm":"YYYY-MM-DD";return s.isValid()?s.format(i):""}case"tags":case"multiselect":return e.map(t=>t.text).join(", ");case"checkboxes":return e.map(e=>{let s=e;return t.options.forEach(t=>{t.value===e&&(s=t.text)}),s}).join(", ");case"radio":case"select":{const s=t.options.filter(t=>t.value===e)[0];return s?s.text:null}}return"object"===typeof e&&null!==e?"…":e.toString()},duplicateItem(t){this.addItem(this.items[t+this.pagination.offset]),this.onInput()},escape(){if("new"===this.currentIndex){let t=Object.values(this.currentModel),e=!0;if(t.forEach(t=>{!1===this.columnIsEmpty(t)&&(e=!1)}),!0===e)return void this.close()}this.submit()},focus(){this.$refs.add&&this.$refs.add.focus&&this.$refs.add.focus()},indexOf(t){return this.limit?(this.page-1)*this.limit+t+1:t+1},isActive(t){return this.currentIndex===t},jump(t,e){this.open(t+this.pagination.offset,e)},makeItems(t){return!1===Array.isArray(t)?[]:this.sort(t)},onInput(){this.$emit("input",this.items)},open(t,e){this.currentIndex=t,this.currentModel=this.$helper.clone(this.items[t]),this.createForm(e)},paginate(t){this.open(t.offset)},paginateItems(t){this.page=t.page},previewExists(t){return this.$helper.isComponent(`k-${t}-field-preview`)},remove(){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(t){return this.sortBy?t.sortBy(this.sortBy):t},save(){return null!==this.currentIndex&&void 0!==this.currentIndex?this.validate(this.currentModel).then(()=>("new"===this.currentIndex?this.addItem(this.currentModel):this.items[this.currentIndex]=this.currentModel,this.items=this.sort(this.items),this.onInput(),!0)).catch(t=>{throw this.$store.dispatch("notification/error",{message:this.$t("error.form.incomplete"),details:t}),t}):Promise.resolve()},submit(){this.save().then(this.close).catch(()=>{})},validate(t){return this.$api.post(this.endpoints.field+"/validate",t).then(t=>{if(t.length>0)throw t;return!0})},width(t){if(!t)return"auto";const e=t.toString().split("/");if(2!==e.length)return"auto";const s=Number(e[0]),i=Number(e[1]);return parseFloat(100/i*s,2).toFixed(2)+"%"},update(t,e,s){this.items[t][e]=s,this.onInput()}}},zu=Uu,Hu=(s("088c"),Object(c["a"])(zu,qu,Fu,!1,null,null,null)),Ku=Hu.exports,Gu=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-field",t._b({staticClass:"k-tags-field",attrs:{input:t._uid,counter:t.counterOptions}},"k-field",t.$props,!1),[s("k-input",t._g(t._b({ref:"input",attrs:{id:t._uid,theme:"field",type:"tags"}},"k-input",t.$props,!1),t.$listeners))],1)},Yu=[],Wu={inheritAttrs:!1,props:{...$n.props,...In.props,...Xo.props,counter:{type:Boolean,default:!0}},computed:{counterOptions(){return null!==this.value&&!this.disabled&&!1!==this.counter&&{count:this.value&&Array.isArray(this.value)?this.value.length:0,min:this.min,max:this.max}}},methods:{focus(){this.$refs.input.focus()}}},Vu=Wu,Ju=Object(c["a"])(Vu,Gu,Yu,!1,null,null,null),Zu=Ju.exports,Xu=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-field",t._b({staticClass:"k-tel-field",attrs:{input:t._uid}},"k-field",t.$props,!1),[s("k-input",t._g(t._b({ref:"input",attrs:{id:t._uid,theme:"field",type:"tel"}},"k-input",t.$props,!1),t.$listeners))],1)},Qu=[],td={inheritAttrs:!1,props:{...$n.props,...In.props,...sl.props,icon:{type:String,default:"phone"}},methods:{focus(){this.$refs.input.focus()}}},ed=td,sd=Object(c["a"])(ed,Xu,Qu,!1,null,null,null),id=sd.exports,nd=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("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"}),s("k-input",t._g(t._b({ref:"input",attrs:{id:t._uid,theme:"field"}},"k-input",t.$props,!1),t.$listeners))],2)},ad=[],rd={inheritAttrs:!1,props:{...$n.props,...In.props,...Gr.props,counter:{type:Boolean,default:!0}},computed:{counterOptions(){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(){this.$refs.input.focus()},select(){this.$refs.input.select()}}},od=rd,ld=(s("b746"),Object(c["a"])(od,nd,ad,!1,null,null,null)),cd=ld.exports,ud=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-field",t._b({staticClass:"k-textarea-field",attrs:{input:t._uid,counter:t.counterOptions}},"k-field",t.$props,!1),[s("k-input",t._g(t._b({ref:"input",attrs:{id:t._uid,type:"textarea",theme:"field"}},"k-input",t.$props,!1),t.$listeners))],1)},dd=[],pd={inheritAttrs:!1,props:{...$n.props,...In.props,...ll.props,counter:{type:Boolean,default:!0}},computed:{counterOptions(){return null!==this.value&&!this.disabled&&!1!==this.counter&&{count:this.value?this.value.length:0,min:this.minlength,max:this.maxlength}}},methods:{focus(){this.$refs.input.focus()}}},hd=pd,md=Object(c["a"])(hd,ud,dd,!1,null,null,null),fd=md.exports,gd=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-field",t._b({staticClass:"k-time-field",attrs:{input:t._uid}},"k-field",t.$props,!1),[s("k-input",t._g(t._b({ref:"input",attrs:{id:t._uid,theme:"field",type:"time"}},"k-input",t.$props,!1),t.listeners))],1)},kd=[],bd={inheritAttrs:!1,props:{...$n.props,...In.props,...pl.props,icon:{type:String,default:"clock"}},computed:{listeners(){return{...this.$listeners,update:t=>this.$emit("input",t),input:()=>{}}}},methods:{focus(){this.$refs.input.focus()}}},vd=bd,$d=Object(c["a"])(vd,gd,kd,!1,null,null,null),yd=$d.exports,_d=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-field",t._b({staticClass:"k-toggle-field",attrs:{input:t._uid}},"k-field",t.$props,!1),[s("k-input",t._g(t._b({ref:"input",attrs:{id:t._uid,theme:"field",type:"toggle"}},"k-input",t.$props,!1),t.$listeners))],1)},wd=[],xd={inheritAttrs:!1,props:{...$n.props,...In.props,...bl.props},methods:{focus(){this.$refs.input.focus()}}},Od=xd,Cd=Object(c["a"])(Od,_d,wd,!1,null,null,null),Sd=Cd.exports,Ed=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-field",t._b({staticClass:"k-url-field",attrs:{input:t._uid}},"k-field",t.$props,!1),[s("k-input",t._g(t._b({ref:"input",attrs:{id:t._uid,theme:"field",type:"url"}},"k-input",t.$props,!1),t.$listeners),[t.link?s("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)},jd=[],Td={inheritAttrs:!1,props:{...$n.props,...In.props,..._l.props,link:{type:Boolean,default:!0},icon:{type:String,default:"url"}},methods:{focus(){this.$refs.input.focus()}}},Ld=Td,Id=Object(c["a"])(Ld,Ed,jd,!1,null,null,null),Ad=Id.exports,Bd=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-field",t._b({staticClass:"k-users-field"},"k-field",t.$props,!1),[s("k-button-group",{staticClass:"k-field-options",attrs:{slot:"options"},slot:"options"},[t.more&&!t.disabled?s("k-button",{staticClass:"k-field-options-button",attrs:{icon:t.btnIcon},on:{click:t.open}},[t._v(" "+t._s(t.btnLabel)+" ")]):t._e()],1),t.selected.length?[s("k-draggable",{attrs:{element:t.elements.list,list:t.selected,handle:!0,"data-invalid":t.isInvalid},on:{end:t.onInput}},t._l(t.selected,(function(e,i){return s(t.elements.item,{key:e.email,tag:"component",attrs:{sortable:!t.disabled&&t.selected.length>1,text:e.text,info:e.info,link:t.link?t.$api.users.link(e.id):null,image:e.image,icon:e.icon}},[t.disabled?t._e():s("k-button",{attrs:{slot:"options",icon:"remove"},on:{click:function(e){return t.remove(i)}},slot:"options"})],1)})),1)]:s("k-empty",{attrs:{"data-invalid":t.isInvalid,icon:"users"},on:{click:t.open}},[t._v(" "+t._s(t.empty||t.$t("field.users.empty"))+" ")]),s("k-users-dialog",{ref:"selector",on:{submit:t.select}})],2)},Dd=[],Md={mixins:[Vl],methods:{open(){if(this.disabled)return!1;this.$refs.selector.open({endpoint:this.endpoints.field,max:this.max,multiple:this.multiple,search:this.search,selected:this.selected.map(t=>t.id)})}}},Nd=Md,Pd=(s("7f6e"),Object(c["a"])(Nd,Bd,Dd,!1,null,null,null)),Rd=Pd.exports,qd=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-field",t._b({staticClass:"k-writer-field",attrs:{input:t._uid,counter:!1}},"k-field",t.$props,!1),[s("k-input",{attrs:{after:t.after,before:t.before,icon:t.icon,theme:"field"}},[s("k-writer",t._b({ref:"input",staticClass:"k-writer-field-input",attrs:{value:t.value},on:{input:function(e){return t.$emit("input",e)}}},"k-writer",t.$props,!1))],1)],1)},Fd=[],Ud={inheritAttrs:!1,props:{...$n.props,...In.props,...mr.props},methods:{focus(){this.$refs.input.focus()}}},zd=Ud,Hd=(s("1267"),Object(c["a"])(zd,qd,Fd,!1,null,null,null)),Kd=Hd.exports,Gd=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("nav",{staticClass:"k-toolbar"},[s("div",{staticClass:"k-toolbar-wrapper"},[s("div",{staticClass:"k-toolbar-buttons"},[t._l(t.layout,(function(e,i){return[e.divider?[s("span",{key:i,staticClass:"k-toolbar-divider"})]:e.dropdown?[s("k-dropdown",{key:i},[s("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()}}}),s("k-dropdown-content",{ref:i+"-dropdown",refInFor:!0},t._l(e.dropdown,(function(e,i){return s("k-dropdown-item",{key:i,attrs:{icon:e.icon},on:{click:function(s){return t.command(e.command,e.args)}}},[t._v(" "+t._s(e.label)+" ")])})),1)],1)]:[s("k-button",{key:i,staticClass:"k-toolbar-button",attrs:{icon:e.icon,tooltip:e.label,tabindex:"-1"},on:{click:function(s){return t.command(e.command,e.args)}}})]]}))],2)])])},Yd=[];const Wd=function(t){this.command("insert",(e,s)=>{let i=[];return s.split("\n").forEach((e,s)=>{let n="ol"===t?s+1+".":"-";i.push(n+" "+e)}),i.join("\n")})};var Vd,Jd,Zd={layout:["headlines","bold","italic","|","link","email","file","|","code","ul","ol"],props:{buttons:{type:[Boolean,Array],default:!0},uploads:[Boolean,Object,Array]},data(){let t={},e={},s=[],i=this.commands();return!1===this.buttons?t:(Array.isArray(this.buttons)&&(s=this.buttons),!0!==Array.isArray(this.buttons)&&(s=this.$options.layout),s.forEach((s,n)=>{if("|"===s)t["divider-"+n]={divider:!0};else if(i[s]){let n=i[s];t[s]=n,n.shortcut&&(e[n.shortcut]=s)}}),{layout:t,shortcuts:e})},methods:{command(t,e){"function"===typeof t?t.apply(this):this.$emit("command",t,e)},close(){Object.keys(this.$refs).forEach(t=>{const e=this.$refs[t][0];e.close&&"function"===typeof e.close&&e.close()})},fileCommandSetup(){let 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(){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:"k",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(){return Wd.apply(this,["ul"])}},ol:{label:this.$t("toolbar.button.ol"),icon:"list-numbers",command(){return Wd.apply(this,["ol"])}}}},shortcut(t,e){if(this.shortcuts[t]){const s=this.layout[this.shortcuts[t]];if(!s)return!1;e.preventDefault(),this.command(s.command,s.args)}}}},Xd=Zd,Qd=(s("df0d"),Object(c["a"])(Xd,Gd,Yd,!1,null,null,null)),tp=Qd.exports,ep=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-dialog",{ref:"dialog",attrs:{"submit-button":t.$t("insert")},on:{close:t.cancel,submit:function(e){return t.$refs.form.submit()}}},[s("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)},sp=[],ip={data(){return{value:{email:null,text:null},fields:{email:{label:this.$t("email"),type:"email"},text:{label:this.$t("link.text"),type:"text"}}}},computed:{kirbytext(){return this.$store.state.system.info.kirbytext}},methods:{open(t,e){this.value.text=e,this.$refs.dialog.open()},cancel(){this.$emit("cancel")},createKirbytext(){const t=this.value.email||"";return this.value.text&&this.value.text.length>0?`(email: ${t} text: ${this.value.text})`:`(email: ${t})`},createMarkdown(){const t=this.value.email||"";return this.value.text&&this.value.text.length>0?`[${this.value.text}](mailto:${t})`:`<${t}>`},submit(){this.$emit("submit",this.kirbytext?this.createKirbytext():this.createMarkdown()),this.value={email:null,text:null},this.$refs.dialog.close()}}},np=ip,ap=Object(c["a"])(np,ep,sp,!1,null,null,null),rp=ap.exports,op=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-dialog",{ref:"dialog",attrs:{"submit-button":t.$t("insert")},on:{close:t.cancel,submit:function(e){return t.$refs.form.submit()}}},[s("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)},lp=[],cp={data(){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(){return this.$store.state.system.info.kirbytext}},methods:{open(t,e){this.value.text=e,this.$refs.dialog.open()},cancel(){this.$emit("cancel")},createKirbytext(){return this.value.text.length>0?`(link: ${this.value.url} text: ${this.value.text})`:`(link: ${this.value.url})`},createMarkdown(){return this.value.text.length>0?`[${this.value.text}](${this.value.url})`:`<${this.value.url}>`},submit(){this.$emit("submit",this.kirbytext?this.createKirbytext():this.createMarkdown()),this.value={url:null,text:null},this.$refs.dialog.close()}}},up=cp,dp=Object(c["a"])(up,op,lp,!1,null,null,null),pp=dp.exports,hp=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",[s("p",{staticClass:"k-date-field-preview"},[t._v(" "+t._s(t.text)+" ")])])},mp=[],fp={props:{field:Object,value:String},computed:{text(){const t=Ar.methods.toDatetime.call(this,this.value);return t.format(this.field.display)}}},gp=fp,kp=(s("96a5"),Object(c["a"])(gp,hp,mp,!1,null,null,null)),bp=kp.exports,vp=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("p",{staticClass:"k-url-field-preview"},[t._v(" "+t._s(t.column.before)+" "),s("k-link",{attrs:{to:t.link,target:"_blank"},nativeOn:{click:function(t){t.stopPropagation()}}},[t._v(" "+t._s(t.value)+" ")]),t._v(" "+t._s(t.column.after)+" ")],1)},$p=[],yp={props:{column:{type:Object,default(){return{}}},value:String},computed:{link(){return this.value}}},_p=yp,wp=(s("977f"),Object(c["a"])(_p,vp,$p,!1,null,null,null)),xp=wp.exports,Op={extends:xp,computed:{link(){return this.value&&this.value.length>0?"mailto:"+this.value:null}}},Cp=Op,Sp=Object(c["a"])(Cp,Vd,Jd,!1,null,null,null),Ep=Sp.exports,jp=function(){var t=this,e=t.$createElement,s=t._self._c||e;return t.value?s("ul",{staticClass:"k-files-field-preview"},t._l(t.value,(function(e){return s("li",{key:e.url},[s("k-link",{attrs:{title:e.filename,to:e.link},nativeOn:{click:function(t){t.stopPropagation()}}},["image"===e.type?s("k-image",t._b({},"k-image",t.imageOptions(e),!1)):s("k-icon",t._b({},"k-icon",e.icon,!1))],1)],1)})),0):t._e()},Tp=[],Lp=function(t,e="list",s="1/1"){if(!t||0===t.length)return!1;let i=null,n=null;if(t.list?(i=t[e].url,n=t[e].srcset):(i=t.url,n=t.srcset),!i)return!1;let a={src:i,srcset:n,back:t.back||"black",cover:t.cover};return"cards"===e&&(a.ratio=t.ratio||"3/2",a.sizes=Ip(s)),a};function Ip(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"}}var Ap,Bp,Dp={props:{value:Array,field:Object},methods:{imageOptions(t){const e=Lp(t.image);return e.src?{...e,back:"pattern",cover:!1,...this.field.image||{}}:{src:t.url}}}},Mp=Dp,Np=(s("21dc"),Object(c["a"])(Mp,jp,Tp,!1,null,null,null)),Pp=Np.exports,Rp=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",{staticClass:"k-list-field-preview",domProps:{innerHTML:t._s(t.value)}})},qp=[],Fp={inheritAttrs:!1,props:{value:String}},Up=Fp,zp=(s("200d"),Object(c["a"])(Up,Rp,qp,!1,null,null,null)),Hp=zp.exports,Kp=function(){var t=this,e=t.$createElement,s=t._self._c||e;return t.value?s("ul",{staticClass:"k-pages-field-preview"},t._l(t.value,(function(e){return s("li",{key:e.id},[s("figure",[s("k-link",{attrs:{title:e.id,to:t.$api.pages.link(e.id)},nativeOn:{click:function(t){t.stopPropagation()}}},[s("k-icon",{staticClass:"k-pages-field-preview-image",attrs:{type:"page",back:"pattern"}}),s("figcaption",[t._v(" "+t._s(e.text)+" ")])],1)],1)])})),0):t._e()},Gp=[],Yp={props:{value:Array}},Wp=Yp,Vp=(s("d0c1"),Object(c["a"])(Wp,Kp,Gp,!1,null,null,null)),Jp=Vp.exports,Zp=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",[s("p",{staticClass:"k-time-field-preview"},[t._v(" "+t._s(t.text)+" ")])])},Xp=[],Qp={props:{field:Object,value:String},computed:{text(){const t=pl.methods.toDatetime.call(this,this.value);return t.format(this.field.display)}}},th=Qp,eh=(s("f9aa"),Object(c["a"])(th,Zp,Xp,!1,null,null,null)),sh=eh.exports,ih=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-input",{staticClass:"k-toggle-field-preview",attrs:{text:t.text,type:"toggle"},on:{input:function(e){return t.$emit("input",e)}},model:{value:t.value,callback:function(e){t.value=e},expression:"value"}})},nh=[],ah={props:{field:Object,value:Boolean,column:Object},computed:{text(){return!1!==this.column.text?this.field.text:null}}},rh=ah,oh=(s("1c4e"),Object(c["a"])(rh,ih,nh,!1,null,null,null)),lh=oh.exports,ch=function(){var t=this,e=t.$createElement,s=t._self._c||e;return t.value?s("ul",{staticClass:"k-users-field-preview"},t._l(t.value,(function(e){return s("li",{key:e.email},[s("figure",[s("k-link",{attrs:{title:e.email,to:t.$api.users.link(e.id)},nativeOn:{click:function(t){t.stopPropagation()}}},[e.avatar?s("k-image",{staticClass:"k-users-field-preview-avatar",attrs:{src:e.avatar.url,back:"pattern"}}):s("k-icon",{staticClass:"k-users-field-preview-avatar",attrs:{type:"user",back:"pattern"}}),s("figcaption",[t._v(" "+t._s(e.username)+" ")])],1)],1)])})),0):t._e()},uh=[],dh={props:{value:Array}},ph=dh,hh=(s("3a85"),Object(c["a"])(ph,ch,uh,!1,null,null,null)),mh=hh.exports,fh=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",{staticClass:"k-writer-field-preview",domProps:{innerHTML:t._s(t.value)}})},gh=[],kh={inheritAttrs:!1,props:{value:String}},bh=kh,vh=(s("5e9a"),Object(c["a"])(bh,fh,gh,!1,null,null,null)),$h=vh.exports,yh=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("span",{staticClass:"k-aspect-ratio",style:{paddingBottom:t.ratioPadding},attrs:{"data-cover":t.cover}},[t._t("default")],2)},_h=[],wh={props:{cover:Boolean,ratio:String},computed:{ratioPadding(){return this.$helper.ratio(this.ratio)}}},xh=wh,Oh=(s("8d8b"),Object(c["a"])(xh,yh,_h,!1,null,null,null)),Ch=Oh.exports,Sh=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",{staticClass:"k-bar"},[t.$slots.left?s("div",{staticClass:"k-bar-slot",attrs:{"data-position":"left"}},[t._t("left")],2):t._e(),t.$slots.center?s("div",{staticClass:"k-bar-slot",attrs:{"data-position":"center"}},[t._t("center")],2):t._e(),t.$slots.right?s("div",{staticClass:"k-bar-slot",attrs:{"data-position":"right"}},[t._t("right")],2):t._e()])},Eh=[],jh=(s("6f7b"),{}),Th=Object(c["a"])(jh,Sh,Eh,!1,null,null,null),Lh=Th.exports,Ih=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",t._g({staticClass:"k-box",attrs:{"data-theme":t.theme}},t.$listeners),[t._t("default",[s("k-text",{domProps:{innerHTML:t._s(t.text)}})])],2)},Ah=[],Bh={props:{theme:String,text:String}},Dh=Bh,Mh=(s("7dc7"),Object(c["a"])(Dh,Ih,Ah,!1,null,null,null)),Nh=Mh.exports,Ph=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("figure",t._g({staticClass:"k-card"},t.$listeners),[t.sortable?s("k-sort-handle"):t._e(),s(t.wrapper,{tag:"component",attrs:{to:t.link,target:t.target}},[t.imageOptions?s("k-image",t._b({staticClass:"k-card-image"},"k-image",t.imageOptions,!1)):s("span",{staticClass:"k-card-icon",style:"padding-bottom:"+t.ratioPadding},[s("k-icon",t._b({},"k-icon",t.icon,!1))],1),s("figcaption",{staticClass:"k-card-content"},[s("span",{staticClass:"k-card-text",attrs:{"data-noinfo":!t.info}},[t._v(t._s(t.text))]),t.info?s("span",{staticClass:"k-card-info",domProps:{innerHTML:t._s(t.info)}}):t._e()])],1),s("nav",{staticClass:"k-card-options"},[t.flag?s("k-status-icon",t._b({staticClass:"k-card-options-button"},"k-status-icon",t.flag,!1)):t._e(),t._t("options",[t.options?s("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(),s("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)},Rh=[],qh={inheritAttrs:!1,props:{column:String,flag:Object,icon:{type:Object,default(){return{type:"file",back:"black"}}},image:[Object,Boolean],info:String,link:[String,Function],options:[Array,Function],sortable:Boolean,target:String,text:String},computed:{wrapper(){return this.link?"k-link":"div"},ratioPadding(){return this.icon&&this.icon.ratio?this.$helper.ratio(this.icon.ratio):this.$helper.ratio("3/2")},imageOptions(){return Lp(this.image,"cards",this.column)}}},Fh=qh,Uh=(s("c119"),Object(c["a"])(Fh,Ph,Rh,!1,null,null,null)),zh=Uh.exports,Hh=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",{staticClass:"k-cards"},[t._t("default",t._l(t.cards,(function(e,i){return s("k-card",t._g(t._b({key:i},"k-card",e,!1),t.$listeners))})))],2)},Kh=[],Gh={props:{cards:Array}},Yh=Gh,Wh=(s("f56d"),Object(c["a"])(Yh,Hh,Kh,!1,null,null,null)),Vh=Wh.exports,Jh=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",{staticClass:"k-collection",attrs:{"data-layout":t.layout}},[s("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 s(t.elements.item,t._b({key:i,tag:"component",class:{"k-draggable-item":e.sortable},on:{action:function(s){return t.$emit("action",e,s)},dragstart:function(s){return t.onDragStart(s,e.dragText)}}},"component",e,!1))})),1),t.hasFooter?s("footer",{staticClass:"k-collection-footer"},[t.help?s("k-text",{staticClass:"k-collection-help",attrs:{theme:"help"},domProps:{innerHTML:t._s(t.help)}}):t._e(),s("div",{staticClass:"k-collection-pagination"},[t.hasPagination?s("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)},Zh=[],Xh={props:{help:String,items:{type:[Array,Object],default(){return[]}},layout:{type:String,default:"list"},size:String,sortable:Boolean,pagination:{type:[Boolean,Object],default(){return!1}}},computed:{hasPagination(){return!1!==this.pagination&&(!0!==this.paginationOptions.hide&&!(this.pagination.total<=this.pagination.limit))},hasFooter(){return!(!this.hasPagination&&!this.help)},dragOptions(){return{sort:this.sortable,disabled:!1===this.sortable,draggable:".k-draggable-item"}},elements(){const 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(){const t="object"!==typeof this.pagination?{}:this.pagination;return{limit:10,details:!0,keys:!1,total:0,hide:!1,...t}}},watch:{$props(){this.$forceUpdate()}},over:null,methods:{onEnd(){this.over&&this.over.removeAttribute("data-over"),this.$emit("sort",this.items)},onDragStart(t,e){this.$store.dispatch("drag",{type:"text",data:e})}}},Qh=Xh,tm=(s("8c28"),Object(c["a"])(Qh,Jh,Zh,!1,null,null,null)),em=tm.exports,sm=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",{staticClass:"k-column",attrs:{"data-width":t.width,"data-sticky":t.sticky}},[s("div",[t._t("default")],2)])},im=[],nm={props:{width:String,sticky:Boolean}},am=nm,rm=(s("c9cb"),Object(c["a"])(am,sm,im,!1,null,null,null)),om=rm.exports,lm=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("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)},cm=[],um={props:{label:{type:String,default:"Drop to upload"},disabled:{type:Boolean,default:!1}},data(){return{files:[],dragging:!1,over:!1}},methods:{cancel(){this.reset()},reset(){this.dragging=!1,this.over=!1},onDrop(t){return!0===this.disabled||!1===this.$helper.isUploadEvent(t)?this.reset():(this.$events.$emit("dropzone.drop"),this.files=t.dataTransfer.files,this.$emit("drop",this.files),void this.reset())},onEnter(t){!1===this.disabled&&this.$helper.isUploadEvent(t)&&(this.dragging=!0)},onLeave(){this.reset()},onOver(t){!1===this.disabled&&this.$helper.isUploadEvent(t)&&(t.dataTransfer.dropEffect="copy",this.over=!0)}}},dm=um,pm=(s("414d"),Object(c["a"])(dm,lm,cm,!1,null,null,null)),hm=pm.exports,mm=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s(t.element,t._g({tag:"component",staticClass:"k-empty",attrs:{"data-layout":t.layout,type:"button"===t.element&&"button"}},t.$listeners),[t.icon?s("k-icon",{attrs:{type:t.icon}}):t._e(),s("p",[t._t("default")],2)],1)},fm=[],gm={props:{text:String,icon:String,layout:{type:String,default:"list"}},computed:{element(){return void 0!==this.$listeners["click"]?"button":"div"}}},km=gm,bm=(s("ba8f"),Object(c["a"])(km,mm,fm,!1,null,null,null)),vm=bm.exports,$m=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",{staticClass:"k-file-preview"},[s("k-view",{staticClass:"k-file-preview-layout"},[s("div",{staticClass:"k-file-preview-image"},[s("k-link",{staticClass:"k-file-preview-image-link",attrs:{to:t.file.url,title:t.$t("open"),target:"_blank"}},[t.file.panelImage&&t.file.panelImage.cards&&t.file.panelImage.cards.url?s("k-image",{attrs:{src:t.file.panelImage.cards.url,srcset:t.file.panelImage.cards.srcset,back:"none"}}):t.file.panelIcon?s("k-icon",{staticClass:"k-file-preview-icon",style:{color:t.file.panelIcon.color},attrs:{type:t.file.panelIcon.type}}):s("span",{staticClass:"k-file-preview-placeholder"})],1)],1),s("div",{staticClass:"k-file-preview-details"},[s("ul",[s("li",[s("h3",[t._v(t._s(t.$t("template")))]),s("p",[t._v(t._s(t.file.template||"—"))])]),s("li",[s("h3",[t._v(t._s(t.$t("mime")))]),s("p",[t._v(t._s(t.file.mime))])]),s("li",[s("h3",[t._v(t._s(t.$t("url")))]),s("p",[s("k-link",{attrs:{to:t.file.url,tabindex:"-1",target:"_blank"}},[t._v(" /"+t._s(t.file.id)+" ")])],1)]),s("li",[s("h3",[t._v(t._s(t.$t("size")))]),s("p",[t._v(t._s(t.file.niceSize))])]),s("li",[s("h3",[t._v(t._s(t.$t("dimensions")))]),t.file.dimensions&&(t.file.dimensions.width||t.file.dimensions.height)?s("p",[t._v(" "+t._s(t.file.dimensions.width)+"×"+t._s(t.file.dimensions.height)+" "+t._s(t.$t("pixel"))+" ")]):s("p",[t._v(" — ")])]),s("li",[s("h3",[t._v(t._s(t.$t("orientation")))]),t.file.dimensions&&t.file.dimensions.orientation?s("p",[t._v(" "+t._s(t.$t("orientation."+t.file.dimensions.orientation))+" ")]):s("p",[t._v(" — ")])])])])])],1)},ym=[],_m={props:{file:Object}},wm=_m,xm=(s("696b"),Object(c["a"])(wm,$m,ym,!1,null,null,null)),Om=xm.exports,Cm=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",{staticClass:"k-grid",attrs:{"data-gutter":t.gutter}},[t._t("default")],2)},Sm=[],Em={props:{gutter:String}},jm=Em,Tm=(s("5b23"),Object(c["a"])(jm,Cm,Sm,!1,null,null,null)),Lm=Tm.exports,Im=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("header",{staticClass:"k-header",attrs:{"data-editable":t.editable}},[s("k-headline",{attrs:{tag:"h1",size:"huge"}},[t.editable&&t.$listeners.edit?s("span",{staticClass:"k-headline-editable",on:{click:function(e){return t.$emit("edit")}}},[t._t("default"),s("k-icon",{attrs:{type:"edit"}})],2):t._t("default")],2),t.$slots.left||t.$slots.right?s("k-bar",{staticClass:"k-header-buttons"},[t._t("left",null,{slot:"left"}),t._t("right",null,{slot:"right"})],2):t._e(),s("k-tabs",{attrs:{tab:t.tab,tabs:t.tabsWithBadges,theme:"notice"}})],1)},Am=[],Bm={props:{editable:Boolean,tab:String,tabs:{type:Array,default(){return[]}}},computed:{tabsWithBadges(){const t=Object.keys(this.$store.getters["content/changes"]());return this.tabs.map(e=>{let s=[];return Object.values(e.columns).forEach(t=>{Object.values(t.sections).forEach(t=>{"fields"===t.type&&Object.keys(t.fields).forEach(t=>{s.push(t)})})}),e.badge=s.filter(e=>t.includes(e.toLowerCase())).length,e})}}},Dm=Bm,Mm=(s("53c5"),Object(c["a"])(Dm,Im,Am,!1,null,null,null)),Nm=Mm.exports,Pm=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("ul",{staticClass:"k-list"},[t._t("default",t._l(t.items,(function(e,i){return s("k-list-item",t._g(t._b({key:i},"k-list-item",e,!1),t.$listeners))})))],2)},Rm=[],qm={props:{items:Array}},Fm=qm,Um=(s("c857"),Object(c["a"])(Fm,Pm,Rm,!1,null,null,null)),zm=Um.exports,Hm=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s(t.element,t._g({tag:"component",staticClass:"k-list-item"},t.$listeners),[t.sortable?s("k-sort-handle"):t._e(),s("k-link",{staticClass:"k-list-item-content",attrs:{to:t.link,target:t.target}},[t.image?s("span",{staticClass:"k-list-item-image"},[t.imageOptions?s("k-image",t._b({},"k-image",t.imageOptions,!1)):s("k-icon",t._b({},"k-icon",t.icon,!1))],1):t._e(),s("span",{staticClass:"k-list-item-text"},[s("em",[t._v(t._s(t.text))]),t.info?s("small",{domProps:{innerHTML:t._s(t.info)}}):t._e()])]),s("nav",{staticClass:"k-list-item-options"},[t._t("options",[t.flag?s("k-status-icon",t._b({staticClass:"k-list-item-status"},"k-status-icon",t.flag,!1)):t._e(),t.options?s("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(),s("k-dropdown-content",{ref:"options",attrs:{options:t.options,align:"right"},on:{action:function(e){return t.$emit("action",e)}}})])],2)],1)},Km=[],Gm={inheritAttrs:!1,props:{element:{type:String,default:"li"},image:[Object,Boolean],icon:{type:Object,default(){return{type:"file",back:"black"}}},sortable:Boolean,text:String,target:String,info:String,link:[String,Function],flag:Object,options:[Array,Function]},computed:{imageOptions(){return Lp(this.image)}}},Ym=Gm,Wm=(s("fa6a"),Object(c["a"])(Ym,Hm,Km,!1,null,null,null)),Vm=Wm.exports,Jm=function(){var t=this,e=t.$createElement,s=t._self._c||e;return t.isOpen?s("portal",[s("div",t._g({ref:"overlay",staticClass:"k-overlay",class:t.$vnode.data.staticClass,attrs:{"data-centered":t.loading||t.centered,"data-dimmed":t.dimmed,"data-loading":t.loading},on:{mousedown:t.close}},t.$listeners),[t.loading?s("k-loader",{staticClass:"k-overlay-loader"}):t._t("default",null,{close:t.close,isOpen:t.isOpen})],2)]):t._e()},Zm=[],Xm={inheritAttrs:!0,props:{autofocus:{type:Boolean,default:!0},centered:{type:Boolean,default:!1},dimmed:{type:Boolean,default:!0},loading:{type:Boolean,default:!1}},data(){return{isOpen:!1,scrollTop:0}},methods:{close(){this.isOpen=!1,this.$emit("close"),this.restoreScrollPosition(),this.$events.$off("keydown.esc",this.close),document.removeEventListener("focus",this.focustrap)},focus(){let t=this.$refs.overlay.querySelector("\n [autofocus],\n [data-autofocus]\n ");null===t&&(t=this.$refs.overlay.querySelector("\n input,\n textarea,\n select,\n button\n ")),t&&"function"===typeof t.focus?t.focus():this.$slots.default[0]&&this.$slots.default[0].context&&"function"===typeof this.$slots.default[0].context.focus&&this.$slots.default[0].context.focus()},focustrap(t){this.$refs.overlay&&!1===this.$refs.overlay.contains(t.target)&&this.focus()},open(){this.storeScrollPosition(),this.isOpen=!0,this.$emit("open"),this.$events.$on("keydown.esc",this.close),setTimeout(()=>{!0===this.autofocus&&this.focus(),document.querySelector(".k-overlay > *").addEventListener("mousedown",t=>t.stopPropagation()),this.$emit("ready")},1)},restoreScrollPosition(){const t=document.querySelector(".k-panel-view");t&&t.scrollTop&&(t.scrollTop=this.scrollTop)},storeScrollPosition(){const t=document.querySelector(".k-panel-view");t&&t.scrollTop?this.scrollTop=t.scrollTop:this.scrollTop=0}}},Qm=Xm,tf=(s("f7f5"),Object(c["a"])(Qm,Jm,Zm,!1,null,null,null)),ef=tf.exports,sf=function(){var t=this,e=t.$createElement,s=t._self._c||e;return t.tabs&&t.tabs.length>1?s("div",{staticClass:"k-tabs",attrs:{"data-theme":t.theme}},[s("nav",[t._l(t.visibleTabs,(function(e){return s("k-button",{key:e.name,staticClass:"k-tab-button",attrs:{link:"#"+e.name,current:t.current===e.name,icon:e.icon,tooltip:e.label}},[t._v(" "+t._s(e.label||e.text||e.name)+" "),e.badge?s("span",{staticClass:"k-tabs-badge"},[t._v(" "+t._s(e.badge)+" ")]):t._e()])})),t.invisibleTabs.length?s("k-button",{staticClass:"k-tab-button k-tabs-dropdown-button",attrs:{text:t.$t("more"),icon:"dots"},on:{click:function(e){return e.stopPropagation(),t.$refs.more.toggle()}}}):t._e()],2),t.invisibleTabs.length?s("k-dropdown-content",{ref:"more",staticClass:"k-tabs-dropdown",attrs:{align:"right"}},t._l(t.invisibleTabs,(function(e){return s("k-dropdown-item",{key:"more-"+e.name,attrs:{link:"#"+e.name,current:t.tab===e.name,icon:e.icon,tooltip:e.label}},[t._v(" "+t._s(e.label||e.name)+" ")])})),1):t._e()],1):t._e()},nf=[],af={props:{tab:String,tabs:Array,theme:String},data(){return{size:null,visibleTabs:this.tabs,invisibleTabs:[]}},computed:{current(){const t=this.tabs.find(t=>t.name===this.tab)||this.tabs[0]||{};return t.name}},watch:{tabs(t){this.visibleTabs=t,this.invisibleTabs=[],this.resize(!0)}},created(){window.addEventListener("resize",this.resize)},destroyed(){window.removeEventListener("resize",this.resize)},methods:{resize(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"}}}}},rf=af,of=(s("8f7d"),Object(c["a"])(rf,sf,nf,!1,null,null,null)),lf=of.exports,cf=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",{staticClass:"k-view",attrs:{"data-align":t.align}},[t._t("default")],2)},uf=[],df={props:{align:String}},pf=df,hf=(s("daa8"),Object(c["a"])(pf,cf,uf,!1,null,null,null)),mf=hf.exports,ff=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("draggable",t._g(t._b({staticClass:"k-draggable",attrs:{"component-data":t.data,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)},gf=[],kf=s("b76a"),bf=s.n(kf),vf={components:{draggable:bf.a},props:{data:Object,element:String,handle:[String,Boolean],list:[Array,Object],move:Function,options:Object},data(){return{listeners:{...this.$listeners,start:t=>{this.$store.dispatch("drag",{}),this.$listeners.start&&this.$listeners.start(t)},end:t=>{this.$store.dispatch("drag",null),this.$listeners.end&&this.$listeners.end(t)}}}},computed:{dragOptions(){let t=!1;return t=!0===this.handle?".k-sort-handle":this.handle,{fallbackClass:"k-sortable-fallback",fallbackOnBody:!0,forceFallback:!0,ghostClass:"k-sortable-ghost",handle:t,scroll:document.querySelector(".k-panel-view"),...this.options}}}},$f=vf,yf=Object(c["a"])($f,ff,gf,!1,null,null,null),_f=yf.exports,wf={data(){return{error:null}},errorCaptured(t){return O.debug&&window.console.warn(t),this.error=t,!1},render(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]}},xf=wf,Of=Object(c["a"])(xf,Ap,Bp,!1,null,null,null),Cf=Of.exports,Sf=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s(t.tag,t._g({tag:"component",staticClass:"k-headline",attrs:{"data-theme":t.theme,"data-size":t.size}},t.$listeners),[t.link?s("k-link",{attrs:{to:t.link}},[t._t("default")],2):t._t("default")],2)},Ef=[],jf={props:{link:String,size:{type:String},tag:{type:String,default:"h2"},theme:{type:String}}},Tf=jf,Lf=(s("f8a7"),Object(c["a"])(Tf,Sf,Ef,!1,null,null,null)),If=Lf.exports,Af=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("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.isEmoji?s("span",{staticClass:"k-icon-emoji"},[t._v(t._s(t.type))]):s("svg",{style:{color:t.color},attrs:{viewBox:"0 0 16 16"}},[s("use",{attrs:{"xlink:href":"#icon-"+t.type}})])])},Bf=[],Df={props:{alt:String,color:String,back:String,size:String,type:String},computed:{isEmoji(){return this.$helper.string.hasEmoji(this.type)}}},Mf=Df,Nf=(s("3342"),Object(c["a"])(Mf,Af,Bf,!1,null,null,null)),Pf=Nf.exports,Rf=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("span",t._g({staticClass:"k-image",attrs:{"data-ratio":t.ratio,"data-back":t.back,"data-cover":t.cover}},t.$listeners),[s("span",{style:"padding-bottom:"+t.ratioPadding},[t.loaded?s("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():s("k-loader",{attrs:{position:"center",theme:"light"}}),!t.loaded&&t.error?s("k-icon",{staticClass:"k-image-error",attrs:{type:"cancel"}}):t._e()],1)])},qf=[],Ff={props:{alt:String,back:String,cover:Boolean,ratio:String,sizes:String,src:String,srcset:String},data(){return{loaded:{type:Boolean,default:!1},error:{type:Boolean,default:!1}}},computed:{ratioPadding(){return this.$helper.ratio(this.ratio||"1/1")}},created(){let t=new Image;t.onload=()=>{this.loaded=!0,this.$emit("load")},t.onerror=()=>{this.error=!0,this.$emit("error")},t.src=this.src}},Uf=Ff,zf=(s("0d56"),Object(c["a"])(Uf,Rf,qf,!1,null,null,null)),Hf=zf.exports,Kf=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-icon",{staticClass:"k-loader",attrs:{type:"loader"}})},Gf=[],Yf=(s("3cf3"),{}),Wf=Object(c["a"])(Yf,Kf,Gf,!1,null,null,null),Vf=Wf.exports,Jf=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("progress",{staticClass:"k-progress",attrs:{max:"100"},domProps:{value:t.state}},[t._v(" "+t._s(t.state)+"% ")])},Zf=[],Xf={props:{value:{type:Number,default:0}},data(){return{state:this.value}},methods:{set(t){this.state=t}}},Qf=Xf,tg=(s("9799"),Object(c["a"])(Qf,Jf,Zf,!1,null,null,null)),eg=tg.exports,sg=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-icon",{staticClass:"k-sort-handle",attrs:{type:t.icon,"aria-hidden":"true"}})},ig=[],ng={props:{icon:{type:String,default:"sort"}}},ag=ng,rg=(s("35cb"),Object(c["a"])(ag,sg,ig,!1,null,null,null)),og=rg.exports,lg=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-button",{class:"k-status-icon k-status-icon-"+t.status,attrs:{disabled:t.disabled,icon:t.icon,responsive:t.responsive,tooltip:t.title},on:{click:t.onClick}},[t._v(" "+t._s(t.text)+" ")])},cg=[],ug={props:{click:{type:Function,default:()=>{}},disabled:Boolean,responsive:Boolean,status:String,text:String,tooltip:String},computed:{icon(){return"draft"===this.status?"circle-outline":"unlisted"===this.status?"circle-half":"circle"},title(){let t=this.tooltip||this.text;return this.disabled&&(t+=` (${this.$t("disabled")})`),t}},methods:{onClick(){this.click(),this.$emit("click")}}},dg=ug,pg=(s("dd70"),Object(c["a"])(dg,lg,cg,!1,null,null,null)),hg=pg.exports,mg=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",{staticClass:"k-text",attrs:{"data-align":t.align,"data-size":t.size,"data-theme":t.theme}},[t._t("default")],2)},fg=[],gg={props:{align:String,size:String,theme:String}},kg=gg,bg=(s("b0d6"),Object(c["a"])(kg,mg,fg,!1,null,null,null)),vg=bg.exports,$g=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",{staticClass:"k-user-info"},[t.user.avatar?s("k-image",{attrs:{cover:!0,src:t.user.avatar.url,ratio:"1/1"}}):s("k-icon",{attrs:{type:"user"}}),t._v(" "+t._s(t.user.name||t.user.email||t.user)+" ")],1)},yg=[],_g={props:{user:[Object,String]}},wg=_g,xg=(s("217b"),Object(c["a"])(wg,$g,yg,!1,null,null,null)),Og=xg.exports,Cg=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s(t.component,t._g(t._b({ref:"button",tag:"component"},"component",t.$props,!1),t.$listeners),[t._t("default")],2)},Sg=[],Eg={inheritAttrs:!1,props:{autofocus:Boolean,current:[String,Boolean],disabled:Boolean,icon:String,id:[String,Number],link:String,responsive:Boolean,rel:String,role:String,target:String,tabindex:String,theme:String,tooltip:String,type:{type:String,default:"button"}},computed:{component(){return!0===this.disabled?"k-button-disabled":this.link?"k-button-link":"k-button-native"}},methods:{focus(){this.$refs.button.focus&&this.$refs.button.focus()},tab(){this.$refs.button.tab&&this.$refs.button.tab()},untab(){this.$refs.button.untab&&this.$refs.button.untab()}}},jg=Eg,Tg=(s("3787"),Object(c["a"])(jg,Cg,Sg,!1,null,null,null)),Lg=Tg.exports,Ig=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("span",{staticClass:"k-button",attrs:{id:t.id,"data-disabled":!0,"data-responsive":t.responsive,"data-theme":t.theme,title:t.tooltip}},[t.icon?s("k-icon",{staticClass:"k-button-icon",attrs:{type:t.icon,alt:t.tooltip}}):t._e(),t.$slots.default?s("span",{staticClass:"k-button-text"},[t._t("default")],2):t._e()],1)},Ag=[],Bg={inheritAttrs:!1,props:{icon:String,id:[String,Number],responsive:Boolean,theme:String,tooltip:String}},Dg=Bg,Mg=(s("16eb"),Object(c["a"])(Dg,Ig,Ag,!1,null,null,null)),Ng=Mg.exports,Pg=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",{staticClass:"k-button-group"},[t._t("default")],2)},Rg=[],qg=(s("a567"),{}),Fg=Object(c["a"])(qg,Pg,Rg,!1,null,null,null),Ug=Fg.exports,zg=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-link",t._g({staticClass:"k-button",attrs:{id:t.id,"aria-current":t.current,autofocus:t.autofocus,"data-theme":t.theme,"data-responsive":t.responsive,rel:t.rel,role:t.role,tabindex:t.tabindex,target:t.target,title:t.tooltip,to:t.link}},t.$listeners),[t.icon?s("k-icon",{staticClass:"k-button-icon",attrs:{type:t.icon,alt:t.tooltip}}):t._e(),t.$slots.default?s("span",{staticClass:"k-button-text"},[t._t("default")],2):t._e()],1)},Hg=[],Kg={inheritAttrs:!1,props:{autofocus:Boolean,current:[String,Boolean],icon:String,id:[String,Number],link:String,rel:String,responsive:Boolean,role:String,target:String,tabindex:String,theme:String,tooltip:String}},Gg=Kg,Yg=Object(c["a"])(Gg,zg,Hg,!1,null,null,null),Wg=Yg.exports,Vg=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("button",t._g({staticClass:"k-button",attrs:{id:t.id,"aria-current":t.current,autofocus:t.autofocus,"data-theme":t.theme,"data-responsive":t.responsive,role:t.role,tabindex:t.tabindex,title:t.tooltip,type:t.type}},t.$listeners),[t.icon?s("k-icon",{staticClass:"k-button-icon",attrs:{type:t.icon,alt:t.tooltip}}):t._e(),t.$slots.default?s("span",{staticClass:"k-button-text"},[t._t("default")],2):t._e()],1)},Jg=[],Zg={mounted(){this.$el.addEventListener("keyup",this.onTab,!0),this.$el.addEventListener("blur",this.onUntab,!0)},destroyed(){this.$el.removeEventListener("keyup",this.onTab,!0),this.$el.removeEventListener("blur",this.onUntab,!0)},methods:{focus(){this.$el.focus&&this.$el.focus()},onTab(t){9===t.keyCode&&this.$el.setAttribute("data-tabbed",!0)},onUntab(){this.$el.removeAttribute("data-tabbed")},tab(){this.$el.focus(),this.$el.setAttribute("data-tabbed",!0)},untab(){this.$el.removeAttribute("data-tabbed")}}},Xg={mixins:[Zg],inheritAttrs:!1,props:{autofocus:Boolean,current:[String,Boolean],icon:String,id:[String,Number],responsive:Boolean,role:String,tabindex:String,theme:String,tooltip:String,type:{type:String,default:"button"}}},Qg=Xg,tk=Object(c["a"])(Qg,Vg,Jg,!1,null,null,null),ek=tk.exports,sk=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("span",{staticClass:"k-dropdown",on:{click:function(t){t.stopPropagation()}}},[t._t("default")],2)},ik=[],nk=(s("f95f"),{}),ak=Object(c["a"])(nk,sk,ik,!1,null,null,null),rk=ak.exports,ok=function(){var t=this,e=t.$createElement,s=t._self._c||e;return t.isOpen?s("div",{staticClass:"k-dropdown-content",attrs:{"data-align":t.align}},[t._t("default",[t._l(t.items,(function(e,i){return["-"===e?s("hr",{key:t._uid+"-item-"+i}):s("k-dropdown-item",t._b({key:t._uid+"-item-"+i,ref:t._uid+"-item-"+i,refInFor:!0,on:{click:function(s){return t.$emit("action",e.click)}}},"k-dropdown-item",e,!1),[t._v(" "+t._s(e.text)+" ")])]}))])],2):t._e()},lk=[];let ck=null;var uk,dk,pk={props:{options:[Array,Function],align:String},data(){return{items:[],current:-1,isOpen:!1}},methods:{async fetchOptions(t){if(!this.options)return t(this.items);if("string"===typeof this.options){const e=await fetch(this.options),s=await e.json();return t(s)}"function"===typeof this.options?this.options(t):Array.isArray(this.options)&&t(this.options)},open(){this.reset(),ck&&ck!==this&&ck.close(),this.fetchOptions(t=>{this.$events.$on("keydown",this.navigate),this.$events.$on("click",this.close),this.items=t,this.isOpen=!0,this.$emit("open"),ck=this})},reset(){this.current=-1,this.$events.$off("keydown",this.navigate),this.$events.$off("click",this.close)},close(){this.reset(),this.isOpen=ck=!1,this.$emit("close")},toggle(){this.isOpen?this.close():this.open()},focus(t=0){this.$children[t]&&this.$children[t].focus&&(this.current=t,this.$children[t].focus())},navigate(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){const t=this.$children.filter(t=>!1===t.disabled);this.current=this.$children.indexOf(t[t.length-1]);break}if(this.$children[this.current]&&!1===this.$children[this.current].disabled){this.focus(this.current);break}}break;case"Tab":while(1){if(this.current++,this.current>this.$children.length-1){this.close(),this.$emit("leave",t.code);break}if(this.$children[this.current]&&!1===this.$children[this.current].disabled)break}break}}}},hk=pk,mk=(s("98a1"),Object(c["a"])(hk,ok,lk,!1,null,null,null)),fk=mk.exports,gk=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-button",t._g(t._b({ref:"button",staticClass:"k-dropdown-item"},"k-button",t.$props,!1),t.listeners),[t._t("default")],2)},kk=[],bk={inheritAttrs:!1,props:{disabled:Boolean,icon:String,image:[String,Object],link:String,target:String,theme:String,upload:String,current:[String,Boolean]},data(){return{listeners:{...this.$listeners,click:t=>{this.$parent.close(),this.$emit("click",t)}}}},methods:{focus(){this.$refs.button.focus()},tab(){this.$refs.button.tab()}}},vk=bk,$k=(s("580a"),Object(c["a"])(vk,gk,kk,!1,null,null,null)),yk=$k.exports,_k=function(){var t=this,e=t.$createElement,s=t._self._c||e;return t.to&&!t.disabled?s("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):s("span",{staticClass:"k-link",attrs:{title:t.title,"data-disabled":""}},[t._t("default")],2)},wk=[],xk={mixins:[Zg],props:{disabled:Boolean,rel:String,tabindex:[String,Number],target:String,title:String,to:[String,Function]},data(){return{relAttr:"_blank"===this.target?"noreferrer noopener":this.rel,listeners:{...this.$listeners,click:this.onClick}}},computed:{href(){return"function"===typeof this.to?"":void 0===this.$route||"/"!==this.to[0]||this.target?this.to:(this.$router.options.url||"")+this.to}},methods:{isRoutable(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(t){if(!0===this.disabled)return t.preventDefault(),!1;"function"===typeof this.to&&(t.preventDefault(),this.to()),this.isRoutable(t)&&(t.preventDefault(),this.$go(this.to)),this.$emit("click",t)}}},Ok=xk,Ck=(s("cc79"),Object(c["a"])(Ok,_k,wk,!1,null,null,null)),Sk=Ck.exports,Ek=function(){var t=this,e=t.$createElement,s=t._self._c||e;return t.languages.length?s("k-dropdown",[s("k-button",{attrs:{responsive:!0,icon:"globe"},on:{click:function(e){return t.$refs.languages.toggle()}}},[t._v(" "+t._s(t.language.name)+" ")]),t.languages?s("k-dropdown-content",{ref:"languages"},[s("k-dropdown-item",{on:{click:function(e){return t.change(t.defaultLanguage)}}},[t._v(" "+t._s(t.defaultLanguage.name)+" ")]),s("hr"),t._l(t.languages,(function(e){return s("k-dropdown-item",{key:e.code,on:{click:function(s){return t.change(e)}}},[t._v(" "+t._s(e.name)+" ")])}))],2):t._e()],1):t._e()},jk=[],Tk={computed:{defaultLanguage(){return this.$store.state.languages.default},language(){return this.$store.state.languages.current},languages(){return this.$store.state.languages.all.filter(t=>!1===t.default)}},methods:{change(t){this.$store.dispatch("languages/current",t),this.$emit("change",t)}}},Lk=Tk,Ik=Object(c["a"])(Lk,Ek,jk,!1,null,null,null),Ak=Ik.exports,Bk=function(){var t=this,e=t.$createElement,s=t._self._c||e;return t.show?s("nav",{staticClass:"k-pagination",attrs:{"data-align":t.align}},[t.show?s("k-button",{attrs:{disabled:!t.hasPrev,tooltip:t.prevLabel,icon:"angle-left"},on:{click:t.prev}}):t._e(),t.details?[t.dropdown?[s("k-dropdown",[s("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)+" ")],2),s("k-dropdown-content",{ref:"dropdown",staticClass:"k-pagination-selector",on:{open:function(e){t.$nextTick((function(){return t.$refs.page.focus()}))}}},[s("div",{staticClass:"k-pagination-settings"},[s("label",{attrs:{for:"k-pagination-page"}},[s("span",[t._v(t._s(t.pageLabel)+":")]),s("select",{ref:"page",attrs:{id:"k-pagination-page"}},t._l(t.pages,(function(e){return s("option",{key:e,domProps:{selected:t.page===e,value:e}},[t._v(" "+t._s(e)+" ")])})),0)]),s("k-button",{attrs:{icon:"check"},on:{click:function(e){return t.goTo(t.$refs.page.value)}}})],1)])],1)]:[s("span",{staticClass:"k-pagination-details"},[t.total>1?[t._v(t._s(t.detailsText))]:t._e(),t._v(t._s(t.total)+" ")],2)]]:t._e(),t.show?s("k-button",{attrs:{disabled:!t.hasNext,tooltip:t.nextLabel,icon:"angle-right"},on:{click:t.next}}):t._e()],2):t._e()},Dk=[],Mk={props:{align:{type:String,default:"left"},details:{type:Boolean,default:!1},dropdown:{type:Boolean,default:!0},validate:{type:Function,default(){return Promise.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(){return this.$t("pagination.page")}},prevLabel:{type:String,default(){return this.$t("prev")}},nextLabel:{type:String,default(){return this.$t("next")}}},data(){return{currentPage:this.page}},computed:{show(){return this.pages>1},start(){return(this.currentPage-1)*this.limit+1},end(){let t=this.start-1+this.limit;return t>this.total?this.total:t},detailsText(){return 1===this.limit?this.start+" / ":this.start+"-"+this.end+" / "},pages(){return Math.ceil(this.total/this.limit)},hasPrev(){return this.start>1},hasNext(){return this.endthis.limit},offset(){return this.start-1}},watch:{page(t){this.currentPage=parseInt(t)}},created(){!0===this.keys&&window.addEventListener("keydown",this.navigate,!1)},destroyed(){window.removeEventListener("keydown",this.navigate,!1)},methods:{goTo(t){this.validate(t).then(()=>{t<1&&(t=1),t>this.pages&&(t=this.pages),this.currentPage=t,this.$refs.dropdown&&this.$refs.dropdown.close(),this.$emit("paginate",{page:this.currentPage,start:this.start,end:this.end,limit:this.limit,offset:this.offset})}).catch(()=>{})},prev(){this.goTo(this.currentPage-1)},next(){this.goTo(this.currentPage+1)},navigate(t){switch(t.code){case"ArrowLeft":this.prev();break;case"ArrowRight":this.next();break}}}},Nk=Mk,Pk=(s("a66d"),Object(c["a"])(Nk,Bk,Dk,!1,null,null,null)),Rk=Pk.exports,qk=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-button-group",{staticClass:"k-prev-next"},[s("k-button",t._b({attrs:{icon:"angle-left"}},"k-button",t.button(t.prev),!1)),s("k-button",t._b({attrs:{icon:"angle-right"}},"k-button",t.button(t.next),!1))],1)},Fk=[],Uk={props:{prev:{type:[Boolean,Object],default:!1},next:{type:[Boolean,Object],default:!1}},methods:{button(t){return t||{disabled:!0,link:"#"}}}},zk=Uk,Hk=(s("7a7d"),Object(c["a"])(zk,qk,Fk,!1,null,null,null)),Kk=Hk.exports,Gk=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-overlay",{ref:"overlay"},[s("div",{staticClass:"k-search",attrs:{role:"search"}},[s("div",{staticClass:"k-search-input"},[s("k-dropdown",{staticClass:"k-search-types"},[s("k-button",{attrs:{icon:t.currentType.icon},on:{click:function(e){return t.$refs.types.toggle()}}},[t._v(" "+t._s(t.currentType.label)+": ")]),s("k-dropdown-content",{ref:"types"},t._l(t.types,(function(e,i){return s("k-dropdown-item",{key:i,attrs:{icon:e.icon},on:{click:function(e){return t.changeType(i)}}},[t._v(" "+t._s(e.label)+" ")])})),1)],1),s("input",{directives:[{name:"model",rawName:"v-model",value:t.q,expression:"q"}],ref:"input",attrs:{placeholder:t.$t("search")+" …","aria-label":t.$t("search"),autofocus:!0,type:"text"},domProps:{value:t.q},on:{input:[function(e){e.target.composing||(t.q=e.target.value)},function(e){t.hasResults=!0}],keydown:[function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"down",40,e.key,["Down","ArrowDown"])?null:(e.preventDefault(),t.onDown(e))},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"up",38,e.key,["Up","ArrowUp"])?null:(e.preventDefault(),t.onUp(e))},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"tab",9,e.key,"Tab")?null:(e.preventDefault(),t.onTab(e))},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"enter",13,e.key,"Enter")?null:t.onEnter(e)},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"esc",27,e.key,["Esc","Escape"])?null:t.close(e)}]}}),s("k-button",{staticClass:"k-search-close",attrs:{icon:t.isLoading?"loader":"cancel",tooltip:t.$t("close")},on:{click:t.close}})],1),!t.q||t.hasResults&&!t.items.length?t._e():s("div",{staticClass:"k-search-results"},[t.items.length?s("ul",{on:{mouseout:function(e){t.selected=-1}}},t._l(t.items,(function(e,i){return s("li",{key:e.id,attrs:{"data-selected":t.selected===i},on:{mouseover:function(e){t.selected=i}}},[s("k-link",{attrs:{to:e.link},on:{click:t.close}},[s("span",{staticClass:"k-search-item-image"},[t.imageOptions(e.image)?s("k-image",t._b({},"k-image",t.imageOptions(e.image),!1)):s("k-icon",t._b({},"k-icon",e.icon,!1))],1),s("span",{staticClass:"k-search-item-info"},[s("strong",[t._v(t._s(e.title))]),s("small",[t._v(t._s(e.info))])])])],1)})),0):t.hasResults?t._e():s("p",{staticClass:"k-search-empty"},[t._v(" "+t._s(t.$t("search.results.none"))+" ")])])])])},Yk=[],Wk={props:{types:{type:Object,default(){return{}}},type:{type:String}},data(){return{isLoading:!1,hasResults:!0,items:[],currentType:this.getType(this.type),q:null,selected:-1}},watch:{q(){this.search(this.q)},currentType(){this.search(this.q)},type(){this.currentType=this.getType(this.type)},types(){this.currentType=this.getType(this.type)}},created(){this.search=V(this.search,250)},methods:{changeType(t){this.currentType=this.getType(t),this.$nextTick(()=>{this.$refs.input.focus()})},close(){this.$refs.overlay.close(),this.hasResults=!0,this.items=[],this.q=null},getType(t){return this.types[t]||this.types[Object.keys(this.types)[0]]},imageOptions(t){return Lp(t)},navigate(t){this.$go(t.link),this.close()},onDown(){this.selected=0&&this.selected--},open(){this.$refs.overlay.open()},async search(t){this.isLoading=!0,this.$refs.types&&this.$refs.types.close();try{if(""===t)throw new Error;this.items=await this.currentType.search({query:t,limit:O.search.limit})}catch(e){this.items=[]}finally{this.selected=-1,this.isLoading=!1,this.hasResults=this.items.length>0}}}},Vk=Wk,Jk=(s("4cb2"),Object(c["a"])(Vk,Gk,Yk,!1,null,null,null)),Zk=Jk.exports,Xk=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("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))}}},[s("span",{staticClass:"k-tag-text"},[t._t("default")],2),t.removable?s("span",{staticClass:"k-tag-toggle",on:{click:t.remove}},[t._v("×")]):t._e()])},Qk=[],tb={props:{removable:Boolean,size:String},methods:{remove(){this.removable&&this.$emit("remove")},focus(){this.$refs.button.focus()}}},eb=tb,sb=(s("021f"),Object(c["a"])(eb,Xk,Qk,!1,null,null,null)),ib=sb.exports,nb=function(){var t=this,e=t.$createElement,s=t._self._c||e;return t.user&&t.view?s("div",{staticClass:"k-topbar"},[s("k-view",[s("div",{staticClass:"k-topbar-wrapper"},[s("k-dropdown",{staticClass:"k-topbar-menu"},[s("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()}}},[s("k-icon",{attrs:{type:"angle-down"}})],1),s("k-dropdown-content",{ref:"menu",staticClass:"k-topbar-menu"},[s("ul",[t._l(t.views,(function(e,i){return[e.menu?s("li",{key:"menu-item-"+i,attrs:{"aria-current":t.$store.state.view===i}},[s("k-dropdown-item",{attrs:{disabled:!1===t.$permissions.access[i],icon:e.icon,link:e.link}},[t._v(" "+t._s(t.menuTitle(e,i))+" ")])],1):t._e()]})),s("li",[s("hr")]),s("li",{attrs:{"aria-current":"account"===t.$route.meta.view}},[s("k-dropdown-item",{attrs:{icon:"account",link:"/account"}},[t._v(" "+t._s(t.$t("view.account"))+" ")])],1),s("li",[s("hr")]),s("li",[s("k-dropdown-item",{attrs:{icon:"logout",link:"/logout"}},[t._v(" "+t._s(t.$t("logout"))+" ")])],1)],2)])],1),t.view?s("k-link",{staticClass:"k-topbar-button k-topbar-view-button",attrs:{to:t.view.link}},[s("k-icon",{attrs:{type:t.view.icon}}),t._v(" "+t._s(t.breadcrumbTitle)+" ")],1):t._e(),t.$store.state.breadcrumb.length>1?s("k-dropdown",{staticClass:"k-topbar-breadcrumb-menu"},[s("k-button",{staticClass:"k-topbar-button",on:{click:function(e){return t.$refs.crumb.toggle()}}},[t._v(" … "),s("k-icon",{attrs:{type:"angle-down"}})],1),s("k-dropdown-content",{ref:"crumb"},[s("k-dropdown-item",{attrs:{icon:t.view.icon,link:t.view.link}},[t._v(" "+t._s(t.$t("view."+t.$store.state.view,t.view.label))+" ")]),t._l(t.$store.state.breadcrumb,(function(e,i){return s("k-dropdown-item",{key:"crumb-"+i+"-dropdown",attrs:{icon:t.view.icon,link:e.link}},[t._v(" "+t._s(e.label)+" ")])}))],2)],1):t._e(),s("nav",{staticClass:"k-topbar-crumbs"},t._l(t.$store.state.breadcrumb,(function(e,i){return s("k-link",{key:"crumb-"+i,attrs:{to:e.link}},[t._v(" "+t._s(e.label)+" ")])})),1),s("div",{staticClass:"k-topbar-signals"},[s("span",{directives:[{name:"show",rawName:"v-show",value:t.$store.state.isLoading,expression:"$store.state.isLoading"}],staticClass:"k-topbar-loader"},[s("svg",{attrs:{viewBox:"0 0 16 18"}},[s("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?[s("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(" "+t._s(t.notification.message)+" ")])]:t.unregistered?[s("div",{staticClass:"k-registration"},[s("p",[t._v(t._s(t.$t("license.unregistered")))]),s("k-button",{staticClass:"k-topbar-signals-button",attrs:{responsive:!0,tooltip:t.$t("license.unregistered"),icon:"key"},on:{click:function(e){return t.$emit("register")}}},[t._v(" "+t._s(t.$t("license.register"))+" ")]),s("k-button",{staticClass:"k-topbar-signals-button",attrs:{responsive:!0,link:"https://getkirby.com/buy",target:"_blank",icon:"cart"}},[t._v(" "+t._s(t.$t("license.buy"))+" ")])],1)]:t._e(),[s("k-form-indicator")],s("k-button",{staticClass:"k-topbar-signals-button",attrs:{tooltip:t.$t("search"),icon:"search"},on:{click:function(e){return t.$emit("search")}}})],2)],1)])],1):t._e()},ab=[],rb={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},resetPassword:{link:"/reset-password",icon:"key",menu:!1},...window.panel.plugins.views},ob={computed:{breadcrumbTitle(){let t=this.$t("view."+this.$store.state.view,this.view.label);return"site"===this.$store.state.view&&this.$store.state.system.info.title||t},view(){return rb[this.$store.state.view]},views(){return rb},user(){return this.$store.state.user.current},notification(){return this.$store.state.notification.type&&"error"!==this.$store.state.notification.type?this.$store.state.notification:null},unregistered(){return!this.$store.state.system.info.license}},methods:{menuTitle(t,e){let s=this.$t("view."+e,t.label);return"site"===e&&this.$store.state.system.info.site||s}}},lb=ob,cb=(s("1e3b"),Object(c["a"])(lb,nb,ab,!1,null,null,null)),ub=cb.exports,db=function(){var t=this,e=t.$createElement,s=t._self._c||e;return 0===t.tabs.length?s("k-box",{attrs:{text:t.empty,theme:"info"}}):s("k-grid",{staticClass:"k-sections",attrs:{gutter:"large"}},t._l(t.currentTab.columns,(function(e,i){return s("k-column",{key:t.parent+"-column-"+i,attrs:{width:e.width,sticky:e.sticky}},[t._l(e.sections,(function(n,a){return[t.meetsCondition(n)?[t.exists(n.type)?s("k-"+n.type+"-section",t._b({key:t.parent+"-column-"+i+"-section-"+a+"-"+t.blueprint,tag:"component",class:"k-section k-section-name-"+n.name,attrs:{name:n.name,parent:t.parent,blueprint:t.blueprint,column:e.width},on:{submit:function(e){return t.$emit("submit",e)}}},"component",n,!1)):[s("k-box",{key:t.parent+"-column-"+i+"-section-"+a,attrs:{text:t.$t("error.section.type.invalid",{type:n.type}),theme:"negative"}})]]:t._e()]}))],2)})),1)},pb=[],hb={props:{empty:String,blueprint:String,parent:String,tab:String,tabs:Array},computed:{currentTab(){return this.tabs.find(t=>t.name===this.tab)||this.tabs[0]||{}},content(){return this.$store.getters["content/values"]()}},methods:{exists(t){return this.$helper.isComponent(`k-${t}-section`)},meetsCondition(t){if(!t.when)return!0;let e=!0;return Object.keys(t.when).forEach(s=>{const i=this.content[s.toLowerCase()],n=t.when[s];i!==n&&(e=!1)}),e}}},mb=hb,fb=(s("6bcd"),Object(c["a"])(mb,db,pb,!1,null,null,null)),gb=fb.exports,kb=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("section",{staticClass:"k-info-section"},[s("k-headline",{staticClass:"k-info-section-headline"},[t._v(" "+t._s(t.headline)+" ")]),s("k-box",{attrs:{theme:t.theme}},[s("k-text",{domProps:{innerHTML:t._s(t.text)}})],1)],1)},bb=[],vb={props:{blueprint:String,help:String,name:String,parent:String},methods:{load(){return this.$api.get(this.parent+"/sections/"+this.name)}}},$b={mixins:[vb],data(){return{headline:null,issue:null,text:null,theme:null}},created(){this.load().then(t=>{this.headline=t.options.headline,this.text=t.options.text,this.theme=t.options.theme||"info"}).catch(t=>{this.issue=t})}},yb=$b,_b=(s("4333"),Object(c["a"])(yb,kb,bb,!1,null,null,null)),wb=_b.exports,xb=function(){var t=this,e=t.$createElement,s=t._self._c||e;return!1===t.isLoading?s("section",{staticClass:"k-pages-section",attrs:{"data-processing":t.isProcessing}},[s("header",{staticClass:"k-section-header"},[s("k-headline",{attrs:{link:t.options.link}},[t._v(" "+t._s(t.headline)+" "),t.options.min?s("abbr",{attrs:{title:t.$t("section.required")}},[t._v("*")]):t._e()]),t.add?s("k-button-group",[s("k-button",{attrs:{icon:"add"},on:{click:t.create}},[t._v(" "+t._s(t.$t("add"))+" ")])],1):t._e()],1),t.error?[s("k-box",{attrs:{theme:"negative"}},[s("k-text",{attrs:{size:"small"}},[s("strong",[t._v(" "+t._s(t.$t("error.section.notLoaded",{name:t.name}))+": ")]),t._v(" "+t._s(t.error)+" ")])],1)]:[t.data.length?s("k-collection",{attrs:{layout:t.options.layout,help:t.help,items:t.data,pagination:t.pagination,sortable:!t.isProcessing&&t.options.sortable,size:t.options.size,"data-invalid":t.isInvalid},on:{change:t.sort,paginate:t.paginate,action:t.action}}):[s("k-empty",{attrs:{layout:t.options.layout,"data-invalid":t.isInvalid,icon:"page"},on:{click:t.create}},[t._v(" "+t._s(t.options.empty||t.$t("pages.empty"))+" ")]),s("footer",{staticClass:"k-collection-footer"},[t.help?s("k-text",{staticClass:"k-collection-help",attrs:{theme:"help"},domProps:{innerHTML:t._s(t.help)}}):t._e()],1)],s("k-page-create-dialog",{ref:"create"}),s("k-page-duplicate-dialog",{ref:"duplicate"}),s("k-page-rename-dialog",{ref:"rename",on:{success:t.update}}),s("k-page-sort-dialog",{ref:"sort",on:{success:t.update}}),s("k-page-status-dialog",{ref:"status",on:{success:t.update}}),s("k-page-template-dialog",{ref:"template",on:{success:t.update}}),s("k-page-remove-dialog",{ref:"remove",on:{success:t.update}})]],2):t._e()},Ob=[],Cb={inheritAttrs:!1,props:{blueprint:String,column:String,parent:String,name:String},data(){return{data:[],error:null,isLoading:!1,isProcessing:!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(){return this.options.headline||" "},help(){return this.options.help},isInvalid(){return!!(this.options.min&&this.data.lengththis.options.max)},language(){return this.$store.state.languages.current},paginationId(){return"kirby$pagination$"+this.parent+"/"+this.name}},watch:{language(){this.reload()}},methods:{items(t){return t},async load(t){t||(this.isLoading=!0),this.isProcessing=!0,null===this.pagination.page&&(this.pagination.page=localStorage.getItem(this.paginationId)||1);try{const t=await this.$api.get(this.parent+"/sections/"+this.name,{page:this.pagination.page});this.options=t.options,this.pagination=t.pagination,this.data=this.items(t.data)}catch(e){this.error=e.message}finally{this.isProcessing=!1,this.isLoading=!1}},paginate(t){localStorage.setItem(this.paginationId,t.page),this.pagination=t,this.reload()},async reload(){await this.load(!0)}}},Sb={mixins:[Cb],computed:{add(){return this.options.add&&this.$permissions.pages.create}},created(){this.load(),this.$events.$on("page.changeStatus",this.reload)},destroyed(){this.$events.$off("page.changeStatus",this.reload)},methods:{create(){this.add&&this.$refs.create.open(this.options.link||this.parent,this.parent+"/blueprints",this.name)},action(t,e){switch(e){case"duplicate":this.$refs.duplicate.open(t.id);break;case"preview":{let e=window.open("","_blank");e.document.write="...",this.$api.pages.preview(t.id).then(t=>{e.location.href=t}).catch(t=>{this.$store.dispatch("notification/error",t)});break}case"rename":this.$refs.rename.open(t.id,t.permissions,"title");break;case"url":this.$refs.rename.open(t.id,t.permissions,"slug");break;case"sort":this.$refs.sort.open(t.id);break;case"status":this.$refs.status.open(t.id);break;case"template":this.$refs.template.open(t.id);break;case"remove":if(this.data.length<=this.options.min){const t=this.options.min>1?"plural":"singular";this.$store.dispatch("notification/error",{message:this.$t("error.section.pages.min."+t,{section:this.options.headline||this.name,min:this.options.min})});break}this.$refs.remove.open(t.id);break;default:throw new Error("Invalid action")}},items(t){return t.map(t=>{const e=!1!==t.permissions.changeStatus;return t.flag={status:t.status,tooltip:this.$t("page.status"),disabled:!e,click:()=>{this.action(t,"status")}},t.sortable=t.permissions.sort&&this.options.sortable,t.column=this.column,t.options=async e=>{try{const s=await this.$api.pages.options(t.id,"list",t.sortable);e(s)}catch(s){this.$store.dispatch("notification/error",s)}},t})},async sort(t){let e=null;if(t.added&&(e="added"),t.moved&&(e="moved"),e){this.isProcessing=!0;const i=t[e].element,n=t[e].newIndex+1+this.pagination.offset;try{await this.$api.pages.status(i.id,"listed",n),this.$store.dispatch("notification/success",":)")}catch(s){this.$store.dispatch("notification/error",{message:s.message,details:s.details}),await this.reload()}finally{this.isProcessing=!1}}},update(){this.reload(),this.$events.$emit("model.update")}}},Eb=Sb,jb=(s("224d"),Object(c["a"])(Eb,xb,Ob,!1,null,null,null)),Tb=jb.exports,Lb=function(){var t=this,e=t.$createElement,s=t._self._c||e;return!1===t.isLoading?s("section",{staticClass:"k-files-section",attrs:{"data-processing":t.isProcessing}},[s("header",{staticClass:"k-section-header"},[s("k-headline",[t._v(" "+t._s(t.headline)+" "),t.options.min?s("abbr",{attrs:{title:t.$t("section.required")}},[t._v("*")]):t._e()]),t.add?s("k-button-group",[s("k-button",{attrs:{icon:"upload"},on:{click:t.upload}},[t._v(" "+t._s(t.$t("add"))+" ")])],1):t._e()],1),t.error?[s("k-box",{attrs:{theme:"negative"}},[s("k-text",{attrs:{size:"small"}},[s("strong",[t._v(t._s(t.$t("error.section.notLoaded",{name:t.name}))+":")]),t._v(" "+t._s(t.error)+" ")])],1)]:[s("k-dropzone",{attrs:{disabled:!1===t.add},on:{drop:t.drop}},[t.data.length?s("k-collection",{attrs:{help:t.help,items:t.data,layout:t.options.layout,pagination:t.pagination,sortable:!t.isProcessing&&t.options.sortable,size:t.options.size,"data-invalid":t.isInvalid},on:{sort:t.sort,paginate:t.paginate,action:t.action}}):[s("k-empty",{attrs:{layout:t.options.layout,"data-invalid":t.isInvalid,icon:"image"},on:{click:function(e){t.add&&t.upload()}}},[t._v(" "+t._s(t.options.empty||t.$t("files.empty"))+" ")]),s("footer",{staticClass:"k-collection-footer"},[t.help?s("k-text",{staticClass:"k-collection-help",attrs:{theme:"help"},domProps:{innerHTML:t._s(t.help)}}):t._e()],1)]],2),s("k-file-rename-dialog",{ref:"rename",on:{success:t.update}}),s("k-file-remove-dialog",{ref:"remove",on:{success:t.update}}),s("k-file-sort-dialog",{ref:"sort",on:{success:t.reload}}),s("k-upload",{ref:"upload",on:{success:t.uploaded,error:t.reload}})]],2):t._e()},Ib=[],Ab={mixins:[Cb],computed:{add(){return!(!this.$permissions.files.create||!1===this.options.upload)&&this.options.upload}},created(){this.load(),this.$events.$on("model.update",this.reload)},destroyed(){this.$events.$off("model.update",this.reload)},methods:{action(t,e){switch(e){case"edit":this.$go(t.link);break;case"download":window.open(t.url);break;case"rename":this.$refs.rename.open(t.parent,t.filename);break;case"replace":this.$refs.upload.open({url:O.api+"/"+this.$api.files.url(t.parent,t.filename),accept:"."+t.extension+","+t.mime,multiple:!1});break;case"remove":if(this.data.length<=this.options.min){const t=this.options.min>1?"plural":"singular";this.$store.dispatch("notification/error",{message:this.$t("error.section.files.min."+t,{section:this.options.headline||this.name,min:this.options.min})});break}this.$refs.remove.open(t.parent,t.filename);break;case"sort":this.$refs.sort.open(t.parent,t,this.options.apiUrl);break}},drop(t){if(!1===this.add)return!1;this.$refs.upload.drop(t,{...this.add,url:O.api+"/"+this.add.api})},items(t){return t.map(t=>(t.sortable=this.options.sortable,t.column=this.column,t.options=async e=>{try{const s=await this.$api.files.options(t.parent,t.filename,"list",this.options.sortable);e(s)}catch(s){this.$store.dispatch("notification/error",s)}},t))},replace(t){this.$refs.upload.open({url:O.api+"/"+this.$api.files.url(t.parent,t.filename),accept:t.mime,multiple:!1})},async sort(t){if(!1===this.options.sortable)return!1;this.isProcessing=!0,t=t.map(t=>t.id);try{await this.$api.patch(this.options.apiUrl+"/files/sort",{files:t,index:this.pagination.offset}),this.$store.dispatch("notification/success",":)")}catch(e){this.reload(),this.$store.dispatch("notification/error",e.message)}finally{this.isProcessing=!1}},update(){this.$events.$emit("model.update")},upload(){if(!1===this.add)return!1;this.$refs.upload.open({...this.add,url:O.api+"/"+this.add.api})},uploaded(){this.$events.$emit("file.create"),this.$events.$emit("model.update"),this.$store.dispatch("notification/success",":)")}}},Bb=Ab,Db=(s("b7a8"),Object(c["a"])(Bb,Lb,Ib,!1,null,null,null)),Mb=Db.exports,Nb=function(){var t=this,e=t.$createElement,s=t._self._c||e;return t.isLoading?t._e():s("section",{staticClass:"k-fields-section"},[t.issue?[s("k-headline",{staticClass:"k-fields-issue-headline"},[t._v(" Error ")]),s("k-box",{attrs:{text:t.issue.message,theme:"negative"}})]:t._e(),s("k-form",{attrs:{fields:t.fields,validate:!0,value:t.values,disabled:null!==t.$store.state.content.status.lock},on:{input:t.input,submit:t.onSubmit}})],2)},Pb=[],Rb={mixins:[vb],inheritAttrs:!1,data(){return{fields:{},isLoading:!0,issue:null}},computed:{language(){return this.$store.state.languages.current},values(){return this.$store.getters["content/values"]()}},watch:{language(){this.fetch()}},created(){this.input=V(this.input,50),this.fetch()},methods:{input(t,e,s){this.$store.dispatch("content/update",[s,t[s]])},async fetch(){try{const t=await this.load();this.fields=t.fields,Object.keys(this.fields).forEach(t=>{this.fields[t].section=this.name,this.fields[t].endpoints={field:this.parent+"/fields/"+t,section:this.parent+"/sections/"+this.name,model:this.parent}})}catch(t){this.issue=t}finally{this.isLoading=!1}},onSubmit(t){this.$events.$emit("keydown.cmd.s",t)}}},qb=Rb,Fb=(s("7d5d"),Object(c["a"])(qb,Nb,Pb,!1,null,null,null)),Ub=Fb.exports,zb=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-error-view",{staticClass:"k-browser-view"},[s("p",[t._v(" We are really sorry, but your browser does not support all features required for the Kirby Panel. ")]),!1===t.hasFetchSupport?[s("p",[s("strong",[t._v("Fetch")]),s("br"),t._v(" We use Javascript's new Fetch API. You can find a list of supported browsers for this feature on "),s("strong",[s("a",{attrs:{href:"https://caniuse.com/#feat=fetch"}},[t._v("caniuse.com")])])])]:t._e(),!1===t.hasGridSupport?[s("p",[s("strong",[t._v("CSS Grid")]),s("br"),t._v(" We use CSS Grids for all our layouts. You can find a list of supported browsers for this feature on "),s("strong",[s("a",{attrs:{href:"https://caniuse.com/#feat=css-grid"}},[t._v("caniuse.com")])])])]:t._e()],2)},Hb=[],Kb={grid(){return!(!window.CSS||!window.CSS.supports("display","grid"))},fetch(){return void 0!==window.fetch},all(){return this.fetch()&&this.grid()}},Gb={computed:{hasFetchSupport(){return Kb.fetch()},hasGridSupport(){return Kb.grid()}},created(){this.$store.dispatch("content/current",null),Kb.all()&&this.$go("/")}},Yb=Gb,Wb=(s("d6fc"),Object(c["a"])(Yb,zb,Hb,!1,null,null,null)),Vb=Wb.exports,Jb=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-error-boundary",{key:t.plugin,scopedSlots:t._u([{key:"error",fn:function(e){var i=e.error;return s("k-error-view",{},[t._v(" "+t._s(i.message||i)+" ")])}}])},[s("k-"+t.plugin+"-plugin-view",t._b({tag:"component"},"component",t.$props,!1))],1)},Zb=[],Xb={props:{plugin:String,hash:String},beforeRouteEnter(t,e,s){s(t=>{t.$store.dispatch("breadcrumb",[]),t.$store.dispatch("content/current",null)})}},Qb=Xb,tv=Object(c["a"])(Qb,Jb,Zb,!1,null,null,null),ev=tv.exports,sv=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-view",{staticClass:"k-error-view"},[s("div",{staticClass:"k-error-view-content"},[s("k-text",[s("p",[s("k-icon",{staticClass:"k-error-view-icon",attrs:{type:"alert"}})],1),s("p",[t._t("default")],2)])],1)])},iv=[],nv=(s("d221"),{}),av=Object(c["a"])(nv,sv,iv,!1,null,null,null),rv=av.exports,ov=function(){var t=this,e=t.$createElement,s=t._self._c||e;return t.issue?s("k-error-view",[t._v(" "+t._s(t.issue.message)+" ")]):null!==t.file.id?s("div",{staticClass:"k-file-view"},[s("k-file-preview",{attrs:{file:t.file}}),s("k-view",{staticClass:"k-file-content",attrs:{"data-locked":t.isLocked}},[s("k-header",{attrs:{editable:t.permissions.changeName&&!t.isLocked,tab:t.tab,tabs:t.tabs},on:{edit:function(e){return t.action("rename")}}},[t._v(" "+t._s(t.file.filename)+" "),s("k-button-group",{attrs:{slot:"left"},slot:"left"},[s("k-button",{attrs:{link:t.file.url,responsive:!0,icon:"open",target:"_blank"}},[t._v(" "+t._s(t.$t("open"))+" ")]),s("k-dropdown",[s("k-button",{attrs:{responsive:!0,disabled:t.isLocked,icon:"cog"},on:{click:function(e){return t.$refs.settings.toggle()}}},[t._v(" "+t._s(t.$t("settings"))+" ")]),s("k-dropdown-content",{ref:"settings",attrs:{options:t.options},on:{action:t.action}})],1),s("k-languages-dropdown")],1),t.file.id?s("k-prev-next",{attrs:{slot:"right",prev:t.prev,next:t.next},slot:"right"}):t._e()],1),t.file.id?s("k-sections",{attrs:{blueprint:t.file.blueprint.name,empty:t.$t("file.blueprint",{template:t.file.blueprint.name}),parent:t.parent,tab:t.tab,tabs:t.tabs}}):t._e(),s("k-file-rename-dialog",{ref:"rename",on:{success:t.renamed}}),s("k-file-remove-dialog",{ref:"remove",on:{success:t.deleted}}),s("k-upload",{ref:"upload",attrs:{url:t.uploadApi,accept:t.file.mime,multiple:!1},on:{success:t.uploaded}})],1)],1):t._e()},lv=[],cv={computed:{isLocked(){return null!==this.$store.state.content.status.lock}},created(){this.fetch(),this.$events.$on("model.reload",this.fetch),this.$events.$on("keydown.left",this.toPrev),this.$events.$on("keydown.right",this.toNext)},destroyed(){this.$events.$off("model.reload",this.fetch),this.$events.$off("keydown.left",this.toPrev),this.$events.$off("keydown.right",this.toNext)},methods:{toPrev(t){this.prev&&"body"===t.target.localName&&this.$router.push(this.prev.link)},toNext(t){this.next&&"body"===t.target.localName&&this.$router.push(this.next.link)}}},uv={mixins:[cv],props:{path:{type:String},filename:{type:String,required:!0},tab:{type:String,required:!0}},data(){return{file:{id:null,parent:null,filename:"",url:"",prev:null,next:null,panelIcon:null,panelImage:null,mime:null,content:{}},parent:null,permissions:{changeName:!1,delete:!1},issue:null,tabs:[],options:null}},computed:{uploadApi(){return O.api+"/"+this.path+"/files/"+this.filename},prev(){return this.file.prev?{link:this.$api.files.link(this.path,this.file.prev.filename),tooltip:this.file.prev.filename}:null},language(){return this.$store.state.languages.current},next(){return this.file.next?{link:this.$api.files.link(this.path,this.file.next.filename),tooltip:this.file.next.filename}:null}},watch:{language(){this.fetch()},filename(){this.fetch()}},methods:{async fetch(){try{const t=await this.$api.files.get(this.path,this.filename,{view:"panel"});this.file={...t,next:t.nextWithTemplate,prev:t.prevWithTemplate,url:t.url},this.parent=this.$api.files.url(this.path,t.filename),this.tabs=t.blueprint.tabs,this.permissions=t.options,this.options=async t=>{const e=await this.$api.files.options(this.path,this.file.filename);t(e)},this.$store.dispatch("breadcrumb",this.$api.files.breadcrumb(this.file,this.$route.name)),this.$store.dispatch("title",this.filename),this.$store.dispatch("content/create",{id:"files/"+t.id,api:this.$api.files.link(this.path,this.filename),content:t.content})}catch(t){window.console.error(t),this.issue=t}},action(t){switch(t){case"rename":this.$refs.rename.open(this.path,this.file.filename);break;case"replace":this.$refs.upload.open({url:O.api+"/"+this.$api.files.url(this.path,this.file.filename),accept:"."+this.file.extension+","+this.file.mime});break;case"remove":this.$refs.remove.open(this.path,this.file.filename);break}},deleted(){this.path?this.$go("/"+this.path):this.$go("/site")},renamed(t){this.$go(this.$api.files.link(this.path,t.filename))},uploaded(){this.fetch(),this.$store.dispatch("notification/success",":)")}}},dv=uv,pv=Object(c["a"])(dv,ov,lv,!1,null,null,null),hv=pv.exports,mv=function(){var t=this,e=t.$createElement,s=t._self._c||e;return t.system?s("k-view",{staticClass:"k-installation-view",attrs:{align:"center"}},["install"===t.state?s("form",{on:{submit:function(e){return e.preventDefault(),t.install(e)}}},[s("h1",{staticClass:"k-offscreen"},[t._v(" "+t._s(t.$t("installation"))+" ")]),s("k-fieldset",{attrs:{fields:t.fields,novalidate:!0},model:{value:t.user,callback:function(e){t.user=e},expression:"user"}}),s("k-button",{attrs:{type:"submit",icon:"check"}},[t._v(" "+t._s(t.$t("install"))+" ")])],1):"completed"===t.state?s("k-text",[s("k-headline",[t._v(t._s(t.$t("installation.completed")))]),s("k-link",{attrs:{to:"/login"}},[t._v(" "+t._s(t.$t("login"))+" ")])],1):s("div",[t.system.isInstalled?t._e():s("k-headline",[t._v(" "+t._s(t.$t("installation.issues.headline"))+" ")]),s("ul",{staticClass:"k-installation-issues"},[!1===t.system.isInstallable?s("li",[s("k-icon",{attrs:{type:"alert"}}),s("span",{domProps:{innerHTML:t._s(t.$t("installation.disabled"))}})],1):t._e(),!1===t.requirements.php?s("li",[s("k-icon",{attrs:{type:"alert"}}),s("span",{domProps:{innerHTML:t._s(t.$t("installation.issues.php"))}})],1):t._e(),!1===t.requirements.server?s("li",[s("k-icon",{attrs:{type:"alert"}}),s("span",{domProps:{innerHTML:t._s(t.$t("installation.issues.server"))}})],1):t._e(),!1===t.requirements.mbstring?s("li",[s("k-icon",{attrs:{type:"alert"}}),s("span",{domProps:{innerHTML:t._s(t.$t("installation.issues.mbstring"))}})],1):t._e(),!1===t.requirements.curl?s("li",[s("k-icon",{attrs:{type:"alert"}}),s("span",{domProps:{innerHTML:t._s(t.$t("installation.issues.curl"))}})],1):t._e(),!1===t.requirements.accounts?s("li",[s("k-icon",{attrs:{type:"alert"}}),s("span",{domProps:{innerHTML:t._s(t.$t("installation.issues.accounts"))}})],1):t._e(),!1===t.requirements.content?s("li",[s("k-icon",{attrs:{type:"alert"}}),s("span",{domProps:{innerHTML:t._s(t.$t("installation.issues.content"))}})],1):t._e(),!1===t.requirements.media?s("li",[s("k-icon",{attrs:{type:"alert"}}),s("span",{domProps:{innerHTML:t._s(t.$t("installation.issues.media"))}})],1):t._e(),!1===t.requirements.sessions?s("li",[s("k-icon",{attrs:{type:"alert"}}),s("span",{domProps:{innerHTML:t._s(t.$t("installation.issues.sessions"))}})],1):t._e()]),s("k-button",{attrs:{icon:"refresh"},on:{click:t.check}},[t._v(" "+t._s(t.$t("retry"))+" ")])],1)],1):t._e()},fv=[],gv={data(){return{user:{name:"",email:"",language:"",password:"",role:"admin"},languages:[],system:null}},computed:{state(){return this.system.isOk&&this.system.isInstallable&&!this.system.isInstalled?"install":this.system.isOk&&this.system.isInstallable&&this.system.isInstalled?"completed":null},translation(){return this.$store.state.translation.current},requirements(){return this.system&&this.system.requirements?this.system.requirements:{}},fields(){return{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(t){this.user.language=t},immediate:!0},"user.language"(t){this.$store.dispatch("translation/activate",t)}},created(){this.$store.dispatch("content/current",null),this.check()},methods:{install(){this.$api.system.install(this.user).then(t=>{this.$store.dispatch("user/current",t),this.$store.dispatch("notification/success",this.$t("welcome")+"!"),this.$go("/")}).catch(t=>{this.$store.dispatch("notification/error",t)})},check(){this.$store.dispatch("system/load",!0).then(t=>{!0===t.isInstalled&&t.isReady?this.$go("/login"):this.$api.translations.options().then(e=>{this.languages=e,this.system=t,this.$store.dispatch("title",this.$t("view.installation"))})})}}},kv=gv,bv=(s("146c"),Object(c["a"])(kv,mv,fv,!1,null,null,null)),vv=bv.exports,$v=function(){var t=this,e=t.$createElement,s=t._self._c||e;return t.issue?s("k-error-view",[t._v(" "+t._s(t.issue.message)+" ")]):t.ready&&"login"===t.form?s("k-view",{staticClass:"k-login-view",attrs:{align:"center"}},[s("k-login-plugin")],1):t.ready&&"code"===t.form?s("k-view",{staticClass:"k-login-code-view",attrs:{align:"center"}},[s("k-login-code")],1):t._e()},yv=[],_v={components:{"k-login-plugin":window.panel.plugins.login||Pn},data(){return{ready:!1,issue:null}},computed:{form(){return this.$store.state.user.pendingEmail?"code":this.$store.state.user.current?null:"login"}},created(){this.$store.dispatch("content/current",null),this.$store.dispatch("system/load").then(t=>{t.isReady||this.$go("/installation"),t.user&&t.user.id&&this.$go("/"),t.pendingChallenge&&this.$store.dispatch("user/pending",{email:t.pendingEmail,challenge:t.pendingChallenge}),this.ready=!0,this.$store.dispatch("title",this.$t("login"))}).catch(t=>{this.issue=t})}},wv=_v,xv=(s("24c1"),Object(c["a"])(wv,$v,yv,!1,null,null,null)),Ov=xv.exports,Cv=function(){var t=this,e=t.$createElement,s=t._self._c||e;return t.issue?s("k-error-view",[t._v(" "+t._s(t.issue.message)+" ")]):s("k-view",{staticClass:"k-page-view",attrs:{"data-locked":t.isLocked}},[s("k-header",{attrs:{editable:t.permissions.changeTitle&&!t.isLocked,tab:t.tab,tabs:t.tabs},on:{edit:function(e){return t.action("rename")}}},[t._v(" "+t._s(t.page.title)+" "),s("k-button-group",{attrs:{slot:"left"},slot:"left"},[t.permissions.preview&&t.page.previewUrl?s("k-button",{attrs:{responsive:!0,link:t.page.previewUrl,target:"_blank",icon:"open"}},[t._v(" "+t._s(t.$t("open"))+" ")]):t._e(),t.status?s("k-status-icon",{attrs:{status:t.page.status,disabled:!t.permissions.changeStatus||t.isLocked,responsive:!0,text:t.status.label},on:{click:function(e){return t.action("status")}}}):t._e(),s("k-dropdown",[s("k-button",{attrs:{responsive:!0,disabled:!0===t.isLocked,icon:"cog"},on:{click:function(e){return t.$refs.settings.toggle()}}},[t._v(" "+t._s(t.$t("settings"))+" ")]),s("k-dropdown-content",{ref:"settings",attrs:{options:t.options},on:{action:t.action}})],1),s("k-languages-dropdown")],1),t.page.id?s("k-prev-next",{attrs:{slot:"right",prev:t.prev,next:t.next},slot:"right"}):t._e()],1),t.page.id?s("k-sections",{attrs:{blueprint:t.blueprint,empty:t.$t("page.blueprint",{template:t.blueprint}),parent:t.$api.pages.url(t.page.id),tab:t.tab,tabs:t.tabs}}):t._e(),s("k-page-rename-dialog",{ref:"rename",on:{success:t.update}}),s("k-page-duplicate-dialog",{ref:"duplicate"}),s("k-page-status-dialog",{ref:"status",on:{success:t.update}}),s("k-page-template-dialog",{ref:"template",on:{success:t.update}}),s("k-page-remove-dialog",{ref:"remove"})],1)},Sv=[],Ev={mixins:[cv],props:{path:{type:String,required:!0},tab:{type:String}},data(){return{page:{title:"",id:null,prev:null,next:null,status:null},blueprint:null,preview:!0,permissions:{changeTitle:!1,changeStatus:!1},icon:"page",issue:null,tabs:[],options:null}},computed:{language(){return this.$store.state.languages.current},next(){return this.page.next?{link:this.$api.pages.link(this.page.next.id),tooltip:this.page.next.title}:null},prev(){return this.page.prev?{link:this.$api.pages.link(this.page.prev.id),tooltip:this.page.prev.title}:null},status(){return null!==this.page.status?this.page.blueprint.status[this.page.status]:null}},watch:{language(){this.fetch()},path(){this.fetch()}},created(){this.$events.$on("page.changeSlug",this.update)},destroyed(){this.$events.$off("page.changeSlug",this.update)},methods:{action(t){switch(t){case"duplicate":this.$refs.duplicate.open(this.page.id);break;case"rename":this.$refs.rename.open(this.page.id,this.permissions,"title");break;case"url":this.$refs.rename.open(this.page.id,this.permissions,"slug");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}},async fetch(){try{this.page=await this.$api.pages.get(this.path,{view:"panel"}),this.blueprint=this.page.blueprint.name,this.permissions=this.page.options,this.tabs=this.page.blueprint.tabs,this.options=async t=>{const e=await this.$api.pages.options(this.page.id);t(e)},this.$store.dispatch("breadcrumb",this.$api.pages.breadcrumb(this.page)),this.$store.dispatch("title",this.page.title),this.$store.dispatch("content/create",{id:"pages/"+this.page.id,api:this.$api.pages.link(this.page.id),content:this.page.content})}catch(t){this.issue=t}},update(){this.fetch(),this.$emit("model.update")}}},jv=Ev,Tv=Object(c["a"])(jv,Cv,Sv,!1,null,null,null),Lv=Tv.exports,Iv=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-view",{staticClass:"k-password-reset-view",attrs:{align:"center"}},[s("k-form",{attrs:{fields:t.fields,"submit-button":t.$t("change")},on:{submit:t.submit},model:{value:t.values,callback:function(e){t.values=e},expression:"values"}},[s("template",{slot:"header"},[s("h1",{staticClass:"k-offscreen"},[t._v(" "+t._s(t.$t("view.resetPassword"))+" ")]),t.issue?s("div",{staticClass:"k-login-alert",on:{click:function(e){t.issue=null}}},[s("span",[t._v(t._s(t.issue))]),s("k-icon",{attrs:{type:"alert"}})],1):t._e(),s("k-user-info",{attrs:{user:t.$user}})],1),s("div",{staticClass:"k-login-buttons",attrs:{slot:"footer"},slot:"footer"},[s("k-button",{staticClass:"k-login-button",attrs:{icon:"check",type:"submit"}},[t._v(" "+t._s(t.$t("change"))+" "),t.isLoading?[t._v(" … ")]:t._e()],2)],1)],2)],1)},Av=[],Bv={data(){return{isLoading:!1,issue:"",values:{password:null,passwordConfirmation:null}}},computed:{fields(){return{password:{autofocus:!0,label:this.$t("user.changePassword.new"),icon:"key",type:"password"},passwordConfirmation:{label:this.$t("user.changePassword.new.confirm"),icon:"key",type:"password"}}}},mounted(){this.$store.dispatch("title",this.$t("view.resetPassword"))},methods:{async submit(){if(!this.values.password||this.values.password.length<8)return this.issue=this.$t("error.user.password.invalid"),!1;if(this.values.password!==this.values.passwordConfirmation)return this.issue=this.$t("error.user.password.notSame"),!1;this.isLoading=!0;try{await this.$api.users.changePassword(this.$user.id,this.values.password),this.$store.dispatch("notification/success",":)"),this.$go("/")}catch(t){this.issue=t.message}finally{this.isLoading=!1}}}},Dv=Bv,Mv=(s("310e"),Object(c["a"])(Dv,Iv,Av,!1,null,null,null)),Nv=Mv.exports,Pv=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-view",{staticClass:"k-settings-view"},[s("k-header",[t._v(" "+t._s(t.$t("view.settings"))+" ")]),s("section",{staticClass:"k-system-info"},[s("header",[s("k-headline",[t._v("Kirby")])],1),s("ul",{staticClass:"k-system-info-box"},[s("li",[s("dl",[s("dt",[t._v(t._s(t.$t("license")))]),s("dd",[t.license?[t._v(" "+t._s(t.license)+" ")]:s("p",[s("strong",{staticClass:"k-system-unregistered"},[t._v(t._s(t.$t("license.unregistered")))])])],2)])]),s("li",[s("dl",[s("dt",[t._v(t._s(t.$t("version")))]),s("dd",[t._v(t._s(t.$store.state.system.info.version))])])])])]),t.multilang?s("section",{staticClass:"k-languages"},[t.languages.length>0?[s("section",{staticClass:"k-languages-section"},[s("header",[s("k-headline",[t._v(t._s(t.$t("languages.default")))])],1),s("k-collection",{attrs:{items:t.defaultLanguage},on:{action:t.action}})],1),s("section",{staticClass:"k-languages-section"},[s("header",[s("k-headline",[t._v(t._s(t.$t("languages.secondary")))]),s("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?s("k-collection",{attrs:{items:t.translations},on:{action:t.action}}):s("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?[s("header",[s("k-headline",[t._v(t._s(t.$t("languages")))]),s("k-button",{attrs:{icon:"add"},on:{click:function(e){return t.$refs.create.open()}}},[t._v(" "+t._s(t.$t("language.create"))+" ")])],1),s("k-empty",{attrs:{icon:"globe"},on:{click:function(e){return t.$refs.create.open()}}},[t._v(" "+t._s(t.$t("languages.empty"))+" ")])]:t._e(),s("k-language-create-dialog",{ref:"create",on:{success:t.fetch}}),s("k-language-update-dialog",{ref:"update",on:{success:t.fetch}}),s("k-language-remove-dialog",{ref:"remove",on:{success:t.fetch}})],2):t._e()],1)},Rv=[],qv={data(){return{languages:[]}},computed:{defaultLanguage(){return this.languages.filter(t=>t.default)},multilang(){return this.$store.state.system.info.multilang},license(){return this.$store.state.system.info.license},translations(){return this.languages.filter(t=>!1===t.default)}},created(){this.$store.dispatch("content/current",null),this.$store.dispatch("title",this.$t("view.settings")),this.$store.dispatch("breadcrumb",[]),this.fetch()},methods:{fetch(){!0===this.multilang?this.$api.get("languages").then(t=>{this.languages=t.data.map(e=>({id:e.code,default:e.default,icon:{type:"globe",back:"black"},image:!0,text:e.name,info:e.code,link:()=>{this.$refs.update.open(e.code)},options:[{icon:"edit",text:this.$t("edit"),click:"update"},{icon:"trash",text:this.$t("delete"),disabled:e.default&&1!==t.data.length,click:"remove"}]}))}):this.languages=[]},action(t,e){switch(e){case"update":this.$refs.update.open(t.id);break;case"remove":this.$refs.remove.open(t.id);break}}}},Fv=qv,Uv=(s("9bd5"),Object(c["a"])(Fv,Pv,Rv,!1,null,null,null)),zv=Uv.exports,Hv=function(){var t=this,e=t.$createElement,s=t._self._c||e;return t.issue?s("k-error-view",[t._v(" "+t._s(t.issue.message)+" ")]):s("k-view",{key:"site-view",staticClass:"k-site-view",attrs:{"data-locked":t.isLocked}},[s("k-header",{attrs:{editable:t.permissions.changeTitle&&!t.isLocked,tab:t.tab,tabs:t.tabs},on:{edit:function(e){return t.action("rename")}}},[t._v(" "+t._s(t.site.title)+" "),s("k-button-group",{attrs:{slot:"left"},slot:"left"},[s("k-button",{attrs:{responsive:!0,link:t.site.previewUrl,target:"_blank",icon:"open"}},[t._v(" "+t._s(t.$t("open"))+" ")]),s("k-languages-dropdown")],1)],1),t.site.url?s("k-sections",{attrs:{blueprint:t.site.blueprint.name,empty:t.$t("site.blueprint"),tab:t.tab,tabs:t.tabs,parent:"site"},on:{submit:function(e){return t.$emit("submit",e)}}}):t._e(),s("k-site-rename-dialog",{ref:"rename",on:{success:t.fetch}})],1)},Kv=[],Gv={props:{tab:String},data(){return{site:{title:null,url:null},issue:null,tabs:[],options:null,permissions:{changeTitle:!0}}},computed:{isLocked(){return null!==this.$store.state.content.status.lock},language(){return this.$store.state.languages.current}},watch:{language(){this.fetch()}},created(){this.fetch()},methods:{fetch(){this.$api.site.get({view:"panel"}).then(t=>{this.site=t,this.tabs=t.blueprint.tabs,this.permissions=t.options,this.options=t=>{this.$api.site.options().then(e=>{t(e)})},this.$store.dispatch("breadcrumb",[]),this.$store.dispatch("title",null),this.$store.dispatch("content/create",{id:"site",api:"site",content:t.content})}).catch(t=>{this.issue=t})},action(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}}}},Yv=Gv,Wv=Object(c["a"])(Yv,Hv,Kv,!1,null,null,null),Vv=Wv.exports,Jv=function(){var t=this,e=t.$createElement,s=t._self._c||e;return t.issue?s("k-error-view",[t._v(" "+t._s(t.issue.message)+" ")]):s("k-view",{staticClass:"k-users-view"},[s("k-header",[t._v(" "+t._s(t.$t("view.users"))+" "),s("k-button-group",{attrs:{slot:"left"},slot:"left"},[s("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),s("k-button-group",{attrs:{slot:"right"},slot:"right"},[s("k-dropdown",[s("k-button",{attrs:{responsive:!0,icon:"funnel"},on:{click:function(e){return t.$refs.roles.toggle()}}},[t._v(" "+t._s(t.$t("role"))+": "+t._s(t.role?t.role.text:t.$t("role.all"))+" ")]),s("k-dropdown-content",{ref:"roles",attrs:{align:"right"}},[s("k-dropdown-item",{attrs:{icon:"bolt"},on:{click:function(e){return t.filter(!1)}}},[t._v(" "+t._s(t.$t("role.all"))+" ")]),s("hr"),t._l(t.roles,(function(e){return s("k-dropdown-item",{key:e.value,attrs:{icon:"bolt"},on:{click:function(s){return t.filter(e)}}},[t._v(" "+t._s(e.text)+" ")])}))],2)],1)],1)],1),t.users.length>0?[s("k-collection",{attrs:{items:t.users,pagination:t.pagination},on:{paginate:t.paginate,action:t.action}})]:0===t.total?[s("k-empty",{attrs:{icon:"users"}},[t._v(" "+t._s(t.$t("role.empty"))+" ")])]:t._e(),s("k-user-create-dialog",{ref:"create",on:{success:t.fetch}}),s("k-user-email-dialog",{ref:"email",on:{success:t.fetch}}),s("k-user-language-dialog",{ref:"language",on:{success:t.fetch}}),s("k-user-password-dialog",{ref:"password"}),s("k-user-remove-dialog",{ref:"remove",on:{success:t.fetch}}),s("k-user-rename-dialog",{ref:"rename",on:{success:t.fetch}}),s("k-user-role-dialog",{ref:"role",on:{success:t.fetch}})],2)},Zv=[],Xv={data(){return{page:1,limit:20,total:null,users:[],roles:[],issue:null}},computed:{pagination(){return{page:this.page,limit:this.limit,total:this.total}},role(){let t=null;return this.$route.params.role&&this.roles.forEach(e=>{e.value===this.$route.params.role&&(t=e)}),t}},watch:{$route(){this.fetch()}},created(){this.$store.dispatch("content/current",null),this.$api.roles.options().then(t=>{this.roles=t,this.fetch()})},methods:{fetch(){this.$store.dispatch("title",this.$t("view.users"));let t={paginate:{page:this.page,limit:this.limit},sortBy:"username asc"};this.role&&(t.filterBy=[{field:"role",operator:"==",value:this.role.value}]),this.$api.users.list(t).then(t=>{this.users=t.data.map(t=>{let e={id:t.id,icon:{type:"user",back:"black"},text:t.name||t.email,info:t.role.title,link:"/users/"+t.id,options:e=>{this.$api.users.options(t.id,"list").then(t=>e(t)).catch(t=>{this.$store.dispatch("notification/error",t)})},image:!0};return t.avatar&&(e.image={url:t.avatar.url,cover:!0}),e}),this.role?this.$store.dispatch("breadcrumb",[{link:"/users/role/"+this.role.value,label:this.$t("role")+": "+this.role.text}]):this.$store.dispatch("breadcrumb",[]),this.total=t.pagination.total}).catch(t=>{this.issue=t})},paginate(t){this.page=t.page,this.limit=t.limit,this.fetch()},action(t,e){switch(e){case"edit":this.$go("/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(t){!1===t?this.$go("/users"):this.$go("/users/role/"+t.value),this.$refs.roles.close()}}},Qv=Xv,t$=Object(c["a"])(Qv,Jv,Zv,!1,null,null,null),e$=t$.exports,s$=function(){var t=this,e=t.$createElement,s=t._self._c||e;return t.issue?s("k-error-view",[t._v(" "+t._s(t.issue.message)+" ")]):t.ready?s("div",{staticClass:"k-user-view",attrs:{"data-locked":t.isLocked}},[s("div",{staticClass:"k-user-profile"},[s("k-view",[t.avatar?[s("k-dropdown",[s("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?s("k-image",{attrs:{cover:!0,src:t.avatar,ratio:"1/1"}}):t._e()],1),s("k-dropdown-content",{ref:"picture"},[s("k-dropdown-item",{attrs:{icon:"upload"},on:{click:function(e){return t.$refs.upload.open()}}},[t._v(" "+t._s(t.$t("change"))+" ")]),s("k-dropdown-item",{attrs:{icon:"trash"},on:{click:function(e){return t.action("picture.delete")}}},[t._v(" "+t._s(t.$t("delete"))+" ")])],1)],1)]:[s("k-button",{staticClass:"k-user-view-image",attrs:{tooltip:t.$t("avatar")},on:{click:function(e){return t.$refs.upload.open()}}},[s("k-icon",{attrs:{type:"user"}})],1)],s("k-button-group",[s("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)+" ")]),s("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)+" ")]),s("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),s("k-view",[s("k-header",{attrs:{editable:t.permissions.changeName&&!t.isLocked,tab:t.tab,tabs:t.tabs},on:{edit:function(e){return t.action("rename")}}},[t.user.name&&0!==t.user.name.length?[t._v(" "+t._s(t.user.name)+" ")]:s("span",{staticClass:"k-user-name-placeholder"},[t._v(t._s(t.$t("name"))+" …")]),s("k-button-group",{attrs:{slot:"left"},slot:"left"},[s("k-dropdown",[s("k-button",{attrs:{disabled:t.isLocked,icon:"cog"},on:{click:function(e){return t.$refs.settings.toggle()}}},[t._v(" "+t._s(t.$t("settings"))+" ")]),s("k-dropdown-content",{ref:"settings",attrs:{options:t.options},on:{action:t.action}})],1),s("k-languages-dropdown")],1),t.user.id&&"User"===t.$route.name?s("k-prev-next",{attrs:{slot:"right",prev:t.prev,next:t.next},slot:"right"}):t._e()],2),t.user?s("k-sections",{attrs:{blueprint:t.user.blueprint.name,empty:t.$t("user.blueprint",{role:t.user.role.name}),parent:"users/"+t.user.id,tab:t.tab,tabs:t.tabs}}):t._e(),s("k-user-email-dialog",{ref:"email",on:{success:t.fetch}}),s("k-user-language-dialog",{ref:"language",on:{success:t.fetch}}),s("k-user-password-dialog",{ref:"password"}),s("k-user-remove-dialog",{ref:"remove"}),s("k-user-rename-dialog",{ref:"rename",on:{success:t.fetch}}),s("k-user-role-dialog",{ref:"role",on:{success:t.fetch}}),s("k-upload",{ref:"upload",attrs:{url:t.uploadApi,multiple:!1,accept:"image/*"},on:{success:t.uploadedAvatar}})],1)],1):t._e()},i$=[],n$={mixins:[cv],props:{id:{type:[Boolean,String],required:!0},tab:String},data(){return{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(){return this.$store.state.languages.current},next(){return this.user.next?{link:this.$api.users.link(this.user.next.id),tooltip:this.user.next.name}:null},prev(){return this.user.prev?{link:this.$api.users.link(this.user.prev.id),tooltip:this.user.prev.name}:null},uploadApi(){return O.api+"/users/"+this.user.id+"/avatar"}},watch:{"$route.name":{handler(t){"Account"===t&&this.$store.dispatch("breadcrumb",[])},immediate:!0},language(){this.fetch()},id(){this.fetch()}},methods:{async action(t){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":await this.$api.users.deleteAvatar(this.id),this.avatar=null,this.$store.dispatch("notification/success",":)");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")}},async fetch(){if(this.id)try{this.user=await this.$api.users.get(this.id,{view:"panel"}),this.tabs=this.user.blueprint.tabs,this.ready=!0,this.permissions=this.user.options,this.options=async t=>{const e=await this.$api.users.options(this.user.id);t(e)},this.user.avatar?this.avatar=this.user.avatar.url:this.avatar=null,"User"===this.$route.name&&this.$store.dispatch("breadcrumb",this.$api.users.breadcrumb(this.user)),this.$store.dispatch("title",this.user.name||this.user.email),this.$store.dispatch("content/create",{id:"users/"+this.user.id,api:this.$api.users.link(this.user.id),content:this.user.content})}catch(t){window.console.error(t),this.issue=t}},uploadedAvatar(){this.$store.dispatch("notification/success",":)"),this.fetch()}}},a$=n$,r$=(s("bd96"),Object(c["a"])(a$,s$,i$,!1,null,null,null)),o$=r$.exports,l$=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",{ref:"container",staticClass:"k-block-container",class:"k-block-container-type-"+t.type,attrs:{"data-batched":t.isBatched,"data-disabled":t.fieldset.disabled,"data-hidden":t.isHidden,"data-last-in-batch":t.isLastInBatch,"data-selected":t.isSelected,"data-translate":t.fieldset.translate,tabindex:"0"},on:{keydown:[function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"down",40,e.key,["Down","ArrowDown"])?null:e.ctrlKey&&e.shiftKey?(e.preventDefault(),t.$emit("sortDown")):null},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"up",38,e.key,["Up","ArrowUp"])?null:e.ctrlKey&&e.shiftKey?(e.preventDefault(),t.$emit("sortUp")):null}],focus:function(e){return t.$emit("focus")},focusin:function(e){return t.$emit("focus")}}},[s("div",{staticClass:"k-block",class:t.className},[s(t.customComponent,t._g(t._b({ref:"editor",tag:"component"},"component",t.$props,!1),t.listeners))],1),s("k-block-options",t._g({ref:"options",attrs:{"is-batched":t.isBatched,"is-full":t.isFull,"is-hidden":t.isHidden}},t.listeners)),t.isBatched?t._e():s("k-form-drawer",{ref:"drawer",staticClass:"k-block-drawer",attrs:{icon:t.fieldset.icon||"box",tabs:t.tabs,title:t.fieldset.name,value:t.content},on:{close:function(e){return t.focus()},input:function(e){return t.$emit("update",e)}},scopedSlots:t._u([{key:"options",fn:function(){return[t.isHidden?s("k-button",{staticClass:"k-drawer-option",attrs:{icon:"hidden"},on:{click:function(e){return t.$emit("show")}}}):t._e()]},proxy:!0}],null,!1,244433476)}),s("k-remove-dialog",{ref:"removeDialog",attrs:{text:t.$t("field.blocks.delete.confirm")},on:{submit:t.remove}})],1)},c$=[],u$={inheritAttrs:!1,props:{attrs:[Array,Object],content:[Array,Object],endpoints:Object,fieldset:Object,id:String,isBatched:Boolean,isFull:Boolean,isHidden:Boolean,isLastInBatch:Boolean,isSelected:Boolean,name:String,type:String},computed:{className(){let t=["k-block-type-"+this.type];return this.fieldset.preview&&this.fieldset.preview!==this.type&&t.push("k-block-type-"+this.fieldset.preview),!1===this.wysiwyg&&t.push("k-block-type-default"),t},customComponent(){return this.wysiwyg?this.wysiwygComponent:"k-block-type-default"},listeners(){return{...this.$listeners,confirmToRemove:this.confirmToRemove,open:this.open}},tabs(){let t=this.fieldset.tabs;return Object.entries(t).forEach(([e,s])=>{Object.entries(s.fields).forEach(([s])=>{t[e].fields[s].section=this.name,t[e].fields[s].endpoints={field:this.endpoints.field+"/fieldsets/"+this.type+"/fields/"+s,section:this.endpoints.section,model:this.endpoints.model}})}),t},wysiwyg(){return!1!==this.wysiwygComponent},wysiwygComponent(){if(!1===this.fieldset.preview)return!1;let t="k-block-type-"+this.type;return(this.$helper.isComponent(t)||!(!this.fieldset.preview||(t="k-block-type-"+this.fieldset.preview,!this.$helper.isComponent(t))))&&t}},methods:{confirmToRemove(){this.$refs.removeDialog.open()},focus(){"function"===typeof this.$refs.editor.focus?this.$refs.editor.focus():this.$refs.container.focus()},open(){this.$refs.drawer.open()},remove(){this.$refs.removeDialog.close(),this.$emit("remove",this.id)}}},d$=u$,p$=(s("bbdf"),Object(c["a"])(d$,l$,c$,!1,null,null,null)),h$=p$.exports,m$=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",{staticClass:"k-blocks",attrs:{"data-empty":0===t.blocks.length,"data-alt":t.altKey}},[t.hasFieldsets?[s("k-draggable",t._b({staticClass:"k-blocks-list",on:{sort:t.save},scopedSlots:t._u([{key:"footer",fn:function(){return[s("k-empty",{staticClass:"k-blocks-empty",attrs:{icon:"box"},on:{click:function(e){return t.choose(t.blocks.length)}}},[t._v(" "+t._s(t.empty||t.$t("field.blocks.empty"))+" ")])]},proxy:!0}],null,!1,2413899928)},"k-draggable",t.draggableOptions,!1),t._l(t.blocks,(function(e,i){return s("k-block",t._b({key:e.id,ref:"block-"+e.id,refInFor:!0,attrs:{endpoints:t.endpoints,fieldset:t.fieldset(e),"is-batched":t.isBatched(e),"is-last-in-batch":t.isLastInBatch(e),"is-full":t.isFull,"is-hidden":!0===e.isHidden,"is-selected":t.isSelected(e)},on:{append:function(e){return t.add(e,i+1)},blur:function(e){return t.select(null)},choose:function(e){return t.choose(e)},chooseToAppend:function(e){return t.choose(i+1)},chooseToConvert:function(s){return t.chooseToConvert(e)},chooseToPrepend:function(e){return t.choose(i)},confirmToRemoveSelected:t.confirmToRemoveSelected,duplicate:function(s){return t.duplicate(e,i)},focus:function(s){return t.select(e)},hide:function(s){return t.hide(e)},prepend:function(e){return t.add(e,i)},remove:function(s){return t.remove(e)},sortDown:function(s){return t.sort(e,i,i+1)},sortUp:function(s){return t.sort(e,i,i-1)},show:function(s){return t.show(e)},update:function(s){return t.update(e,s)}}},"k-block",e,!1))})),1),s("k-block-selector",{ref:"selector",attrs:{fieldsets:t.fieldsets,"fieldset-groups":t.fieldsetGroups},on:{add:t.add,convert:t.convert}}),s("k-remove-dialog",{ref:"removeAll",attrs:{text:t.$t("field.blocks.delete.confirm.all")},on:{submit:t.removeAll}}),s("k-remove-dialog",{ref:"removeSelected",attrs:{text:t.$t("field.blocks.delete.confirm.selected")},on:{submit:t.removeSelected}})]:[s("k-box",{attrs:{theme:"info"}},[t._v(" No fieldsets yet ")])]],2)},f$=[],g$={inheritAttrs:!1,props:{empty:String,endpoints:Object,fieldsets:Object,fieldsetGroups:Object,group:String,max:{type:Number,default:null},value:{type:Array,default(){return[]}}},data(){return{batch:[],blocks:this.value,altKey:!1}},computed:{draggableOptions(){return{id:this._uid,handle:".k-block-handle",list:this.blocks,move:this.move,delay:10,data:{fieldsets:this.fieldsets,isFull:this.isFull},options:{group:this.group}}},hasFieldsets(){return Object.keys(this.fieldsets).length},isEmpty(){return 0===this.blocks.length},isFull(){return null!==this.max&&this.blocks.length>=this.max},selected(){return this.$store.state.blocks.current}},watch:{value(){this.blocks=this.value}},created(){this.outsideFocus=t=>{const e=document.querySelector(".k-overlay:last-of-type");!1!==this.$el.contains(t.target)||e&&!1!==e.contains(t.target)||this.select(null)},document.addEventListener("focus",this.outsideFocus,!0),this.onAlt=t=>{t.altKey?this.altKey=!0:this.altKey=!1},document.addEventListener("keydown",this.onAlt,!0),document.addEventListener("keyup",this.onAlt,!0)},destroyed(){document.removeEventListener("focus",this.outsideFocus),document.removeEventListener("keydown",this.onAlt),document.removeEventListener("keyup",this.onAlt)},methods:{async add(t="text",e){const s=await this.$api.get(this.endpoints.field+"/fieldsets/"+t);this.blocks.splice(e,0,s),this.save(),this.$nextTick(()=>{this.focusOrOpen(s)})},addToBatch(t){null!==this.selected&&!1===this.batch.includes(this.selected)&&(this.batch.push(this.selected),this.$store.dispatch("blocks/current",null)),!1===this.batch.includes(t.id)&&this.batch.push(t.id)},choose(t){if(1===Object.keys(this.fieldsets).length){const e=Object.values(this.fieldsets)[0].type;this.add(e,t)}else this.$refs.selector.open(t)},chooseToConvert(t){this.$refs.selector.open(t,{disabled:[t.type],headline:this.$t("field.blocks.changeType"),event:"convert"})},click(t){this.$emit("click",t)},confirmToRemoveAll(){this.$refs.removeAll.open()},confirmToRemoveSelected(){this.$refs.removeSelected.open()},async convert(t,e){const s=this.blocks.findIndex(t=>t.id===e.id);if(-1===s)return!1;const i=t=>{let e={};return Object.values(t.tabs).forEach(t=>{e={...e,...t.fields}}),e},n=this.blocks[s],a=await this.$api.get(this.endpoints.field+"/fieldsets/"+t),r=this.fieldsets[n.type],o=this.fieldsets[t];if(!o)return!1;let l=a.content;const c=i(r),u=i(o);Object.entries(u).forEach(([t,e])=>{const s=c[t];s&&s.type===e.type&&n.content[t]&&(l[t]=n.content[t])}),this.blocks[s]={...a,id:n.id,content:l},this.save()},async duplicate(t,e){const s={...this.$helper.clone(t),id:this.$helper.uuid()};this.blocks.splice(e+1,0,s),this.save()},fieldset(t){return this.fieldsets[t.type]||{icon:"box",name:t.type,tabs:{content:{fields:{}}},type:t.type}},focus(t){this.$refs["block-"+t.id]&&this.$refs["block-"+t.id][0].focus()},focusOrOpen(t){this.fieldsets[t.type].wysiwyg?this.focus(t):this.open(t)},hide(t){this.$set(t,"isHidden",!0),this.save()},isBatched(t){return this.batch.includes(t.id)},isLastInBatch(t){const[e]=this.batch.slice(-1);return e&&t.id===e},isSelected(t){return this.selected&&this.selected===t.id},move(t){if(t.from!==t.to){const e=t.draggedContext.element,s=t.relatedContext.component.componentData||t.relatedContext.component.$parent.componentData;if(!1===Object.keys(s.fieldsets).includes(e.type))return!1;if(!0===s.isFull)return!1}return!0},open(t){this.$refs["block-"+t.id]&&this.$refs["block-"+t.id][0].open()},remove(t){const e=this.blocks.findIndex(e=>e.id===t.id);-1!==e&&(this.selected&&this.selected.id===t.id&&this.select(null),this.$delete(this.blocks,e),this.save())},removeAll(){this.blocks=[],this.save(),this.$refs.removeAll.close()},removeSelected(){this.batch.forEach(t=>{const e=this.blocks.findIndex(e=>e.id===t);-1!==e&&this.$delete(this.blocks,e)}),this.batch=[],this.$store.dispatch("blocks/current",null),this.save(),this.$refs.removeSelected.close()},save(){this.$emit("input",this.blocks)},select(t){t&&this.altKey?this.addToBatch(t):(this.batch=[],this.$store.dispatch("blocks/current",t?t.id:null))},show(t){this.$set(t,"isHidden",!1),this.save()},sort(t,e,s){if(s<0)return;let i=this.$helper.clone(this.blocks);i.splice(e,1),i.splice(s,0,t),this.blocks=i,this.save(),this.$nextTick(()=>{this.focus(t)})},update(t,e){const s=this.blocks.findIndex(e=>e.id===t.id);-1!==s&&Object.entries(e).forEach(([t,e])=>{this.$set(this.blocks[s].content,t,e)}),this.save()}}},k$=g$,b$=(s("f470"),Object(c["a"])(k$,m$,f$,!1,null,null,null)),v$=b$.exports,$$=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("figure",{staticClass:"k-block-figure"},[t.isEmpty?s("k-button",{staticClass:"k-block-figure-empty",attrs:{icon:t.emptyIcon},on:{click:function(e){return t.$emit("open")}}},[t._v(" "+t._s(t.emptyText)+" ")]):s("span",{staticClass:"k-block-figure-container",on:{dblclick:function(e){return t.$emit("open")}}},[t._t("default")],2),t.caption?s("figcaption",[s("k-writer",{attrs:{inline:!0,marks:t.captionMarks,value:t.caption},on:{input:function(e){return t.$emit("update",{caption:e})}}})],1):t._e()],1)},y$=[],_$={inheritAttrs:!1,props:{caption:String,captionMarks:[Boolean,Array],cover:{type:Boolean,default:!0},isEmpty:Boolean,emptyIcon:String,emptyText:String,ratio:String},computed:{ratioPadding(){return this.$helper.ratio(this.ratio||"16/9")}}},w$=_$,x$=(s("0069"),Object(c["a"])(w$,$$,y$,!1,null,null,null)),O$=x$.exports,C$=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-dropdown",{staticClass:"k-block-options"},[t.isBatched?[s("k-button",{staticClass:"k-block-options-button",attrs:{tooltip:t.$t("remove"),icon:"trash"},nativeOn:{mousedown:function(e){return e.preventDefault(),t.$emit("confirmToRemoveSelected")}}})]:[s("k-button",{staticClass:"k-block-options-button",attrs:{tooltip:t.$t("edit"),icon:"edit"},on:{click:function(e){return t.$emit("open")}}}),s("k-button",{staticClass:"k-block-options-button",attrs:{tooltip:t.$t("insert.after"),icon:"add"},on:{click:function(e){return t.$emit("chooseToAppend")}}}),s("k-button",{staticClass:"k-block-options-button",attrs:{tooltip:t.$t("more"),icon:"dots"},on:{click:function(e){return t.$refs.options.toggle()}}}),s("k-button",{staticClass:"k-block-options-button k-block-handle",attrs:{tooltip:t.$t("sort"),icon:"sort"},on:{keydown:[function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"up",38,e.key,["Up","ArrowUp"])?null:(e.preventDefault(),t.$emit("sortUp"))},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"down",40,e.key,["Down","ArrowDown"])?null:(e.preventDefault(),t.$emit("sortDown"))}]}}),s("k-dropdown-content",{ref:"options",attrs:{align:"right"}},[s("k-dropdown-item",{attrs:{disabled:t.isFull,icon:"angle-up"},on:{click:function(e){return t.$emit("chooseToPrepend")}}},[t._v(" "+t._s(t.$t("insert.before"))+" ")]),s("k-dropdown-item",{attrs:{disabled:t.isFull,icon:"angle-down"},on:{click:function(e){return t.$emit("chooseToAppend")}}},[t._v(" "+t._s(t.$t("insert.after"))+" ")]),s("hr"),s("k-dropdown-item",{attrs:{icon:"edit"},on:{click:function(e){return t.$emit("open")}}},[t._v(" "+t._s(t.$t("edit"))+" ")]),s("k-dropdown-item",{attrs:{icon:"refresh"},on:{click:function(e){return t.$emit("chooseToConvert")}}},[t._v(" "+t._s(t.$t("field.blocks.changeType"))+" ")]),s("hr"),s("k-dropdown-item",{attrs:{icon:t.isHidden?"preview":"hidden"},on:{click:function(e){return t.$emit(t.isHidden?"show":"hide")}}},[t._v(" "+t._s(!0===t.isHidden?t.$t("show"):t.$t("hide"))+" ")]),s("k-dropdown-item",{attrs:{disabled:t.isFull,icon:"copy"},on:{click:function(e){return t.$emit("duplicate")}}},[t._v(" "+t._s(t.$t("duplicate"))+" ")]),s("hr"),s("k-dropdown-item",{attrs:{icon:"trash"},on:{click:function(e){return t.$emit("confirmToRemove")}}},[t._v(" "+t._s(t.$t("delete"))+" ")])],1)]],2)},S$=[],E$={props:{isBatched:Boolean,isFull:Boolean,isHidden:Boolean},methods:{open(){this.$refs.options.open()}}},j$=E$,T$=(s("9c44"),Object(c["a"])(j$,C$,S$,!1,null,null,null)),L$=T$.exports,I$=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-dialog",{ref:"dialog",staticClass:"k-block-selector",attrs:{"cancel-button":!1,"submit-button":!1,size:"medium"}},[t.headline?s("k-headline",[t._v(" "+t._s(t.headline)+" ")]):t._e(),t._l(t.groups,(function(e,i){return s("details",{key:i,attrs:{open:e.open}},[s("summary",[t._v(t._s(e.label))]),s("div",{staticClass:"k-block-types"},t._l(e.fieldsets,(function(e){return s("k-button",{key:e.name,ref:"fieldset-"+e.index,refInFor:!0,attrs:{disabled:t.disabled.includes(e.type),icon:e.icon||"box"},on:{keydown:[function(s){return!s.type.indexOf("key")&&t._k(s.keyCode,"up",38,s.key,["Up","ArrowUp"])?null:t.navigate(e.index-1)},function(s){return!s.type.indexOf("key")&&t._k(s.keyCode,"down",40,s.key,["Down","ArrowDown"])?null:t.navigate(e.index+1)}],click:function(s){return t.add(e.type)}}},[t._v(" "+t._s(e.name)+" ")])})),1)])}))],2)},A$=[],B$={inheritAttrs:!1,props:{endpoint:String,fieldsets:Object,fieldsetGroups:Object},data(){return{disabled:[],headline:null,payload:null,event:"add",groups:this.createGroups()}},methods:{add(t){this.$emit(this.event,t,this.payload),this.$refs.dialog.close()},createGroups(){let t={},e=0;const s=this.fieldsetGroups||{blocks:{label:this.$t("field.blocks.fieldsets.label"),sets:Object.keys(this.fieldsets)}};return Object.keys(s).forEach(i=>{let n=s[i];n.open=!1!==n.open,n.fieldsets=n.sets.filter(t=>this.fieldsets[t]).map(t=>(e++,{...this.fieldsets[t],index:e})),0!==n.fieldsets.length&&(t[i]=n)}),t},navigate(t){const e=this.$refs["fieldset-"+t];e&&e[0]&&e[0].focus()},open(t,e={}){const s={event:"add",disabled:[],headline:null,...e};this.event=s.event,this.disabled=s.disabled,this.headline=s.headline,this.payload=t,this.$refs.dialog.open()}}},D$=B$,M$=(s("f6c2"),Object(c["a"])(D$,I$,A$,!1,null,null,null)),N$=M$.exports,P$=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",t._g({staticClass:"k-block-title"},t.$listeners),[s("k-icon",{staticClass:"k-block-icon",attrs:{type:t.icon}}),s("span",{staticClass:"k-block-name"},[t._v(" "+t._s(t.name)+" ")]),t.label?s("span",{staticClass:"k-block-label"},[t._v(" "+t._s(t.label)+" ")]):t._e()],1)},R$=[],q$={inheritAttrs:!1,props:{fieldset:Object,content:Object},computed:{icon(){return this.fieldset.icon||"box"},label(){if(!this.fieldset.label||0===this.fieldset.label.length)return!1;if(this.fieldset.label===this.fieldset.name)return!1;const t=this.$helper.string.template(this.fieldset.label,this.content);return"…"!==t&&t},name(){return this.fieldset.name}}},F$=q$,U$=(s("c21a"),Object(c["a"])(F$,P$,R$,!1,null,null,null)),z$=U$.exports,H$={inheritAttrs:!1,props:{content:Object,fieldset:Object},methods:{field(t,e=null){let s=null;return Object.values(this.fieldset.tabs).forEach(e=>{e.fields[t]&&(s=e.fields[t])}),s||e},open(){this.$emit("open")},update(t){this.$emit("update",{...this.content,...t})}}},K$=H$,G$=Object(c["a"])(K$,uk,dk,!1,null,null,null),Y$=G$.exports;I["a"].component("k-block",h$),I["a"].component("k-blocks",v$),I["a"].component("k-block-figure",O$),I["a"].component("k-block-options",L$),I["a"].component("k-block-selector",N$),I["a"].component("k-block-title",z$),I["a"].component("k-block-type",Y$);const W$=s("9711");W$.keys().map(t=>{const e=t.match(/\w+/)[0],s=e.toLowerCase();let i=W$(t).default;i.extends=Y$,I["a"].component("k-block-type-"+s,i)}),I["a"].component("k-dialog",mt),I["a"].component("k-error-dialog",$t),I["a"].component("k-file-rename-dialog",It),I["a"].component("k-file-remove-dialog",Ct),I["a"].component("k-file-sort-dialog",Pt),I["a"].component("k-files-dialog",Kt),I["a"].component("k-form-dialog",Zt),I["a"].component("k-language-create-dialog",ie),I["a"].component("k-language-remove-dialog",ce),I["a"].component("k-language-update-dialog",fe),I["a"].component("k-page-create-dialog",ye),I["a"].component("k-page-duplicate-dialog",Se),I["a"].component("k-page-remove-dialog",Ae),I["a"].component("k-page-sort-dialog",Ve),I["a"].component("k-page-rename-dialog",Re),I["a"].component("k-page-status-dialog",Ke),I["a"].component("k-page-template-dialog",es),I["a"].component("k-pages-dialog",os),I["a"].component("k-remove-dialog",hs),I["a"].component("k-site-rename-dialog",vs),I["a"].component("k-text-dialog",Os),I["a"].component("k-user-create-dialog",Ls),I["a"].component("k-user-email-dialog",Ns),I["a"].component("k-user-language-dialog",zs),I["a"].component("k-user-password-dialog",Vs),I["a"].component("k-user-remove-dialog",ei),I["a"].component("k-user-rename-dialog",oi),I["a"].component("k-user-role-dialog",hi),I["a"].component("k-users-dialog",vi),I["a"].component("k-drawer",Oi),I["a"].component("k-form-drawer",Li),I["a"].component("k-calendar",zi),I["a"].component("k-counter",Vi),I["a"].component("k-autocomplete",Ni),I["a"].component("k-form",en),I["a"].component("k-form-buttons",ln),I["a"].component("k-form-indicator",mn),I["a"].component("k-field",$n),I["a"].component("k-fieldset",Cn),I["a"].component("k-input",In),I["a"].component("k-login",Pn),I["a"].component("k-login-code",Hn),I["a"].component("k-upload",Jn),I["a"].component("k-writer",mr),I["a"].component("k-checkbox-input",yr),I["a"].component("k-checkboxes-input",Sr),I["a"].component("k-date-input",Ar),I["a"].component("k-datetime-input",Rr),I["a"].component("k-email-input",Jr),I["a"].component("k-list-input",po),I["a"].component("k-multiselect-input",bo),I["a"].component("k-number-input",xo),I["a"].component("k-password-input",Eo),I["a"].component("k-radio-input",Bo),I["a"].component("k-range-input",qo),I["a"].component("k-select-input",Go),I["a"].component("k-tags-input",Xo),I["a"].component("k-tel-input",sl),I["a"].component("k-text-input",Gr),I["a"].component("k-textarea-input",ll),I["a"].component("k-time-input",pl),I["a"].component("k-toggle-input",bl),I["a"].component("k-url-input",_l),I["a"].component("k-blocks-field",El),I["a"].component("k-checkboxes-field",Bl),I["a"].component("k-date-field",ql),I["a"].component("k-email-field",Gl),I["a"].component("k-files-field",Ql),I["a"].component("k-gap-field",nc),I["a"].component("k-headline-field",uc),I["a"].component("k-info-field",gc),I["a"].component("k-layout-field",qc),I["a"].component("k-line-field",Kc),I["a"].component("k-list-field",Zc),I["a"].component("k-multiselect-field",iu),I["a"].component("k-number-field",cu),I["a"].component("k-pages-field",fu),I["a"].component("k-password-field",yu),I["a"].component("k-radio-field",Su),I["a"].component("k-range-field",Au),I["a"].component("k-select-field",Ru),I["a"].component("k-structure-field",Ku),I["a"].component("k-tags-field",Zu),I["a"].component("k-text-field",cd),I["a"].component("k-textarea-field",fd),I["a"].component("k-tel-field",id),I["a"].component("k-time-field",yd),I["a"].component("k-toggle-field",Sd),I["a"].component("k-url-field",Ad),I["a"].component("k-users-field",Rd),I["a"].component("k-writer-field",Kd),I["a"].component("k-toolbar",tp),I["a"].component("k-toolbar-email-dialog",rp),I["a"].component("k-toolbar-link-dialog",pp),I["a"].component("k-date-field-preview",bp),I["a"].component("k-email-field-preview",Ep),I["a"].component("k-files-field-preview",Pp),I["a"].component("k-list-field-preview",Hp),I["a"].component("k-pages-field-preview",Jp),I["a"].component("k-toggle-field-preview",lh),I["a"].component("k-time-field-preview",sh),I["a"].component("k-url-field-preview",xp),I["a"].component("k-users-field-preview",mh),I["a"].component("k-writer-field-preview",$h),I["a"].component("k-aspect-ratio",Ch),I["a"].component("k-bar",Lh),I["a"].component("k-box",Nh),I["a"].component("k-card",zh),I["a"].component("k-cards",Vh),I["a"].component("k-collection",em),I["a"].component("k-column",om),I["a"].component("k-dropzone",hm),I["a"].component("k-empty",vm),I["a"].component("k-file-preview",Om),I["a"].component("k-grid",Lm),I["a"].component("k-header",Nm),I["a"].component("k-list",zm),I["a"].component("k-list-item",Vm),I["a"].component("k-overlay",ef),I["a"].component("k-tabs",lf),I["a"].component("k-view",mf),I["a"].component("k-draggable",_f),I["a"].component("k-error-boundary",Cf),I["a"].component("k-headline",If),I["a"].component("k-icon",Pf),I["a"].component("k-image",Hf),I["a"].component("k-loader",Vf),I["a"].component("k-progress",eg),I["a"].component("k-status-icon",hg),I["a"].component("k-sort-handle",og),I["a"].component("k-text",vg),I["a"].component("k-user-info",Og),I["a"].component("k-button",Lg),I["a"].component("k-button-disabled",Ng),I["a"].component("k-button-group",Ug),I["a"].component("k-button-link",Wg),I["a"].component("k-button-native",ek),I["a"].component("k-dropdown",rk),I["a"].component("k-dropdown-content",fk),I["a"].component("k-dropdown-item",yk),I["a"].component("k-languages-dropdown",Ak),I["a"].component("k-link",Sk),I["a"].component("k-pagination",Rk),I["a"].component("k-prev-next",Kk),I["a"].component("k-search",Zk),I["a"].component("k-tag",ib),I["a"].component("k-topbar",ub),I["a"].component("k-sections",gb),I["a"].component("k-info-section",wb),I["a"].component("k-pages-section",Tb),I["a"].component("k-files-section",Mb),I["a"].component("k-fields-section",Ub),I["a"].component("k-browser-view",Vb),I["a"].component("k-custom-view",ev),I["a"].component("k-error-view",rv),I["a"].component("k-file-view",hv),I["a"].component("k-installation-view",vv),I["a"].component("k-login-view",Ov),I["a"].component("k-page-view",Lv),I["a"].component("k-reset-password-view",Nv),I["a"].component("k-settings-view",zv),I["a"].component("k-site-view",Vv),I["a"].component("k-users-view",e$),I["a"].component("k-user-view",o$);var V$=s("2f62"),J$={namespaced:!0,state:{current:null},mutations:{CURRENT(t,e){t.current=e}},actions:{current(t,e){t.commit("CURRENT",e)}}};const Z$=(t,e)=>{localStorage.setItem("kirby$content$"+t,JSON.stringify(e))};var X$={namespaced:!0,state:{current:null,models:{},status:{enabled:!0,lock:null,unlock:null}},getters:{exists:t=>e=>Object.prototype.hasOwnProperty.call(t.models,e),hasChanges:(t,e)=>t=>{const s=e.model(t).changes;return Object.keys(s).length>0},isCurrent:t=>e=>t.current===e,id:(t,e,s)=>e=>(e=e||t.current,s.languages.current?e+"/"+s.languages.current.code:e),model:(t,e)=>s=>(s=s||t.current,!0===e.exists(s)?t.models[s]:{api:null,originals:{},values:{},changes:{}}),originals:(t,e)=>t=>W(e.model(t).originals),values:(t,e)=>t=>({...e.originals(t),...e.changes(t)}),changes:(t,e)=>t=>W(e.model(t).changes)},mutations:{CREATE(t,[e,s]){if(!s)return!1;let i=t.models[e]?t.models[e].changes:s.changes;I["a"].set(t.models,e,{api:s.api,originals:s.originals,changes:i||{}})},CURRENT(t,e){t.current=e},LOCK(t,e){I["a"].set(t.status,"lock",e)},MOVE(t,[e,s]){const i=W(t.models[e]);I["a"].delete(t.models,e),I["a"].set(t.models,s,i);const n=localStorage.getItem("kirby$content$"+e);localStorage.removeItem("kirby$content$"+e),localStorage.setItem("kirby$content$"+s,n)},REMOVE(t,e){I["a"].delete(t.models,e),localStorage.removeItem("kirby$content$"+e)},REVERT(t,e){t.models[e]&&(I["a"].set(t.models[e],"changes",{}),localStorage.removeItem("kirby$content$"+e))},STATUS(t,e){I["a"].set(t.status,"enabled",e)},UNLOCK(t,e){e&&I["a"].set(t.models[t.current],"changes",{}),I["a"].set(t.status,"unlock",e)},UPDATE(t,[e,s,i]){if(!t.models[e])return!1;i=W(i);const n=JSON.stringify(i),a=JSON.stringify(t.models[e].originals[s]);a==n?I["a"].delete(t.models[e].changes,s):I["a"].set(t.models[e].changes,s,i),Z$(e,{api:t.models[e].api,originals:t.models[e].originals,changes:t.models[e].changes})}},actions:{init(t){Object.keys(localStorage).filter(t=>t.startsWith("kirby$content$")).map(t=>t.split("kirby$content$")[1]).forEach(e=>{const s=localStorage.getItem("kirby$content$"+e);t.commit("CREATE",[e,JSON.parse(s)])}),Object.keys(localStorage).filter(t=>t.startsWith("kirby$form$")).map(t=>t.split("kirby$form$")[1]).forEach(e=>{const s=localStorage.getItem("kirby$form$"+e);let i=null;try{i=JSON.parse(s)}catch(a){}if(!i||!i.api)return localStorage.removeItem("kirby$form$"+e),!1;const n={api:i.api,originals:i.originals,changes:i.values};t.commit("CREATE",[e,n]),Z$(e,n),localStorage.removeItem("kirby$form$"+e)})},create(t,e){e.id=t.getters.id(e.id),(e.id.startsWith("pages/")||e.id.startsWith("site"))&&delete e.content.title;const s={api:e.api,originals:W(e.content),changes:{}};I["a"].$api.get(e.api+"/unlock").then(s=>{!0===s.supported&&!0===s.unlocked&&t.commit("UNLOCK",t.state.models[e.id].changes)}).catch(()=>{}),t.commit("CREATE",[e.id,s]),t.dispatch("current",e.id)},current(t,e){t.commit("CURRENT",e)},disable(t){t.commit("STATUS",!1)},enable(t){t.commit("STATUS",!0)},lock(t,e){t.commit("LOCK",e)},move(t,[e,s]){e=t.getters.id(e),s=t.getters.id(s),t.commit("MOVE",[e,s])},remove(t,e){t.commit("REMOVE",e),t.getters.isCurrent(e)&&t.commit("CURRENT",null)},revert(t,e){e=e||t.state.current,t.commit("REVERT",e)},save(t,e){if(e=e||t.state.current,t.getters.isCurrent(e)&&!1===t.state.status.enabled)return!1;t.dispatch("disable");const s=t.getters.model(e),i={...s.originals,...s.changes};return I["a"].$api.patch(s.api,i).then(()=>{t.commit("CREATE",[e,{...s,originals:i}]),t.dispatch("revert",e),t.dispatch("enable")}).catch(e=>{throw t.dispatch("enable"),e})},unlock(t,e){t.commit("UNLOCK",e)},update(t,[e,s,i]){i=i||t.state.current,t.commit("UPDATE",[i,e,s])}}},Q$={namespaced:!0,state:{open:[]},mutations:{CLOSE(t,e){t.open=t.open.filter(t=>t.id!==e)},GOTO(t,e){t.open=t.open.filter(t=>t.id===e)},OPEN(t,e){t.open.push(e)}},actions:{close(t,e){t.commit("CLOSE",e)},goto(t,e){t.commit("GOTO",e)},open(t,e){t.commit("OPEN",e)}}},ty={namespaced:!0,state:{instance:null,clock:0,step:5,beats:[]},mutations:{ADD(t,e){t.beats.push(e)},CLEAR(t){clearInterval(t.instance),t.clock=0},CLOCK(t){t.clock+=t.step},INITIALIZE(t,e){t.instance=e},REMOVE(t,e){const s=t.beats.map(t=>t.handler).indexOf(e);-1!==s&&I["a"].delete(t.beats,s)}},actions:{add(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(t){t.commit("CLEAR")},remove(t,e){t.commit("REMOVE",e),t.state.beats.length<1&&t.commit("CLEAR")},run(t){t.commit("CLEAR"),t.commit("INITIALIZE",setInterval(()=>{t.commit("CLOCK"),t.state.beats.forEach(e=>{t.state.clock%e.interval===0&&e.handler()})},1e3*t.state.step))}}},ey={namespaced:!0,state:{all:[],current:null,default:null},mutations:{SET_ALL(t,e){t.all=e.map(t=>({code:t.code,default:t.default,direction:t.direction,locale:t.locale,name:t.name,rules:t.rules,url:t.url}))},SET_CURRENT(t,e){t.current=e,e&&e.code&&localStorage.setItem("kirby$language",e.code)},SET_DEFAULT(t,e){t.default=e}},actions:{current(t,e){t.commit("SET_CURRENT",e)},install(t,e){const s=e.filter(t=>t.default)[0];t.commit("SET_ALL",e),t.commit("SET_DEFAULT",s);const i=localStorage.getItem("kirby$language");if(i){const s=e.filter(t=>t.code===i)[0];if(s)return void t.dispatch("current",s)}t.dispatch("current",s||e[0]||null)},async load(t){const e=await I["a"].$api.languages.list();t.dispatch("install",e.data)}}},sy={timer:null,namespaced:!0,state:{type:null,message:null,details:null,timeout:null},mutations:{SET(t,e){t.type=e.type,t.message=e.message,t.details=e.details,t.timeout=e.timeout},UNSET(t){t.type=null,t.message=null,t.details=null,t.timeout=null}},actions:{close(t){clearTimeout(this.timer),t.commit("UNSET")},open(t,e){t.dispatch("close"),t.commit("SET",e),e.timeout&&(this.timer=setTimeout(()=>{t.dispatch("close")},e.timeout))},success(t,e){"string"===typeof e&&(e={message:e}),t.dispatch("open",{type:"success",timeout:4e3,...e})},error(t,e){"string"===typeof e&&(e={message:e}),t.dispatch("open",{type:"error",...e})}}},iy={namespaced:!0,state:{info:{title:null}},mutations:{SET_INFO(t,e){t.info=e},SET_LICENSE(t,e){t.info.license=e},SET_TITLE(t,e){t.info.title=e}},actions:{async load(t,e){if(!e&&t.state.info.isReady&&t.rootState.user.current)return new Promise(e=>{e(t.state.info)});try{const e=await I["a"].$api.system.get();return t.commit("SET_INFO",{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(s){t.commit("SET_INFO",{isBroken:!0,error:s.message})}},register(t,e){t.commit("SET_LICENSE",e)},title(t,e){t.commit("SET_TITLE",e)}}},ny={namespaced:!0,state:{current:null,installed:[]},mutations:{SET_CURRENT(t,e){t.current=e},INSTALL(t,e){t.installed[e.id]=e}},actions:{load(t,e){return I["a"].$api.translations.get(e)},install(t,e){t.commit("INSTALL",e),I["a"].i18n.add(e.id,e.data)},async activate(t,e){const s=t.state.installed[e];if(!s){const s=await t.dispatch("load",e);return t.dispatch("install",s),void t.dispatch("activate",e)}I["a"].i18n.set(e),t.commit("SET_CURRENT",e),document.dir=s.direction,document.documentElement.lang=e}}},ay={namespaced:!0,state:{current:null,path:null,pendingEmail:null,pendingChallenge:null},mutations:{SET_CURRENT(t,e){t.current=e,t.pendingEmail=null,t.pendingChallenge=null,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(t,e){t.path=e},SET_PENDING(t,{email:e,challenge:s}){t.pendingEmail=e,t.pendingChallenge=s,t.user=null,I["a"].prototype.$user=null,I["a"].prototype.$permissions=null}},actions:{current(t,e){t.commit("SET_CURRENT",e)},email(t,e){t.commit("SET_CURRENT",{...t.state.current,email:e})},language(t,e){t.dispatch("translation/activate",e,{root:!0}),t.commit("SET_CURRENT",{...t.state.current,language:e})},async load(t){const e=await I["a"].$api.auth.user();return t.commit("SET_CURRENT",e),e},login(t,e){return t.commit("SET_CURRENT",e),t.dispatch("translation/activate",e.language,{root:!0}),I["a"].prototype.$go(t.state.path||"/"),e},async logout(t,e){if(t.commit("SET_CURRENT",null),e)window.location.href=(window.panel.url||"")+"/login";else try{await I["a"].$api.auth.logout()}finally{I["a"].prototype.$go("/login")}},name(t,e){t.commit("SET_CURRENT",{...t.state.current,name:e})},pending(t,e){t.commit("SET_PENDING",e)},visit(t,e){t.commit("SET_PATH",e)}}};I["a"].use(V$["a"]);var ry=new V$["a"].Store({strict:!1,state:{breadcrumb:[],dialog:null,drag:null,fatal:null,isLoading:!1,title:null,view:null},mutations:{SET_BREADCRUMB(t,e){t.breadcrumb=e},SET_DIALOG(t,e){t.dialog=e},SET_DRAG(t,e){t.drag=e},SET_FATAL(t,e){t.fatal=e},SET_TITLE(t,e){t.title=e},SET_VIEW(t,e){t.view=e},START_LOADING(t){t.isLoading=!0},STOP_LOADING(t){t.isLoading=!1}},actions:{breadcrumb(t,e){t.commit("SET_BREADCRUMB",e)},dialog(t,e){t.commit("SET_DIALOG",e)},drag(t,e){t.commit("SET_DRAG",e)},fatal(t,e){t.commit("SET_FATAL",e)},isLoading(t,e){t.commit(!0===e?"START_LOADING":"STOP_LOADING")},title(t,e){let s;s=t.state.user.current?I["a"].$api.site.get(["title"]):new Promise(e=>{e(t.state.system.info)}),s.then(s=>{t.commit("SET_TITLE",e),t.dispatch("system/title",s.title),document.title=e||"",document.title+=null!==e?" | "+s.title:s.title})},view(t,e){t.commit("SET_VIEW",e)}},modules:{blocks:J$,content:X$,drawers:Q$,heartbeat:ty,languages:ey,notification:sy,system:iy,translation:ny,user:ay}});I["a"].config.errorHandler=t=>{O.debug&&window.console.error(t),ry.dispatch("notification/error",{message:t.message||"An error occurred. Please reload the Panel."})},window.panel=window.panel||{},window.panel.error=(t,e)=>{O.debug&&window.console.error(t+": "+e),ry.dispatch("error",t+". See the console for more information.")};var oy=s("f2f3");I["a"].use(oy["a"].plugin,ry);var ly=s("19e9"),cy=s.n(ly),uy=s("5a0c"),dy=s.n(uy),py=s("f906"),hy=s.n(py),my=s("0ecf"),fy=s.n(my);dy.a.extend(hy.a),dy.a.extend(fy.a),I["a"].prototype.$library={autosize:cy.a,dayjs:dy.a};let gy={};for(var ky in I["a"].options.components)gy[ky]=I["a"].options.components[ky];let by={section:vb};Object.entries(window.panel.plugins.components).forEach(([t,e])=>{e.template||e.render||e.extends?(e.extends&&"string"===typeof e.extends&&(e.extends=gy[e.extends].extend({options:e,components:{...gy,...e.components||{}}}),e.template&&(e.render=null)),e.mixins&&(e.mixins=e.mixins.map(t=>"string"===typeof t?by[t]:t)),gy[t]&&window.console.warn(`Plugin is replacing "${t}"`),I["a"].component(t,e),gy[t]=I["a"].options.components[t]):ry.dispatch("notification/error",`Neither template or render method provided nor extending a component when loading plugin component "${t}". The component has not been registered.`)}),Object.entries(window.panel.plugins.views).forEach(([t,e])=>{if(!e.component)return ry.dispatch("notification/error",`No view component provided when loading view "${t}". The view has not been registered.`),void delete window.panel.plugins.views[t];e.link="/plugins/"+t,void 0===e.icon&&(e.icon="page"),void 0===e.menu&&(e.menu=!0),window.panel.plugins.views[t]={id:t,text:e.text||e.label,link:e.link,icon:e.icon,menu:e.menu},I["a"].component("k-"+t+"-plugin-view",e.component)}),window.panel.plugins.use.forEach(t=>{I["a"].use(t)});var vy=s("82f1"),$y=s("8c4f"),yy=function(t,e,s){ry.dispatch("system/load").then(()=>{const e=ry.state.user.current;if(!e)return ry.dispatch("user/visit",t.path),ry.dispatch("user/logout"),!1;const i=e.permissions.access;return!1===i.panel?(window.location.href=O.site,!1):!1===i[t.meta.view]?(ry.dispatch("notification/error",{message:I["a"].i18n.translate("error.access.view")}),s(!1===i.site?"/account":"/")):void s()})};let _y=[{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(){Object.keys(localStorage).forEach(t=>{t.startsWith("kirby$content$")&&localStorage.removeItem(t)}),ry.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:yy,props:t=>({tab:t.hash.slice(1)||"main"})},{path:"/site/files/:filename",name:"SiteFile",meta:{view:"site"},component:I["a"].component("k-file-view"),beforeEnter:yy,props:t=>({filename:t.params.filename,path:"site",tab:t.hash.slice(1)||"main"})},{path:"/pages/:path/files/:filename",name:"PageFile",meta:{view:"site"},component:I["a"].component("k-file-view"),beforeEnter:yy,props:t=>({filename:t.params.filename,path:"pages/"+t.params.path,tab:t.hash.slice(1)||"main"})},{path:"/users/:path/files/:filename",name:"UserFile",meta:{view:"users"},component:I["a"].component("k-file-view"),beforeEnter:yy,props:t=>({filename:t.params.filename,path:"users/"+t.params.path,tab:t.hash.slice(1)||"main"})},{path:"/pages/:path",name:"Page",meta:{view:"site"},component:I["a"].component("k-page-view"),beforeEnter:yy,props:t=>({path:t.params.path,tab:t.hash.slice(1)||"main"})},{path:"/settings",name:"Settings",meta:{view:"settings"},component:I["a"].component("k-settings-view"),beforeEnter:yy},{path:"/users/role/:role",name:"UsersByRole",meta:{view:"users"},component:I["a"].component("k-users-view"),beforeEnter:yy,props:t=>({role:t.params.role})},{path:"/users",name:"Users",meta:{view:"users"},beforeEnter:yy,component:I["a"].component("k-users-view")},{path:"/users/:id",name:"User",meta:{view:"users"},component:I["a"].component("k-user-view"),beforeEnter:yy,props:t=>({id:t.params.id,tab:t.hash.slice(1)||"main"})},{path:"/account",name:"Account",meta:{view:"account"},component:I["a"].component("k-user-view"),beforeEnter:yy,props:()=>({id:!!ry.state.user.current&&ry.state.user.current.id})},{path:"/reset-password",name:"Reset password",meta:{view:"resetPassword"},component:I["a"].component("k-reset-password-view"),beforeEnter:yy},{path:"/plugins/:id",name:"Plugin",meta:{view:"plugin"},props:t=>({plugin:t.params.id,hash:t.hash.slice(1)}),beforeEnter:yy,component:I["a"].component("k-custom-view")}];_y.push({path:"*",name:"NotFound",beforeEnter:(t,e,s)=>{s("/")}});var wy=_y;I["a"].use($y["a"]);const xy=new $y["a"]({mode:"history",routes:wy,url:"/"===O.url?"":O.url});xy.beforeEach((t,e,s)=>{"Browser"!==t.name&&!1===Kb.all()&&s("/browser"),t.meta.outside||ry.dispatch("user/visit",t.path),"plugin"===t.meta.view?ry.dispatch("view",t.params.id):ry.dispatch("view",t.meta.view),ry.dispatch("content/lock",null),ry.dispatch("content/unlock",null),ry.dispatch("heartbeat/clear"),s()});var Oy=xy;I["a"].config.productionTip=!1,I["a"].config.devtools=!0,I["a"].use(rt),I["a"].use(K),I["a"].use(H),I["a"].use(Y.a),I["a"].use(vy["a"]),I["a"].use(z,ry),I["a"].prototype.$go=t=>{t=t.split("#"),t={path:t[0],hash:t[1]||null},Oy.push(t).catch(t=>{if(t&&t.name&&"NavigationDuplicated"===t.name)return!0;throw t})},new I["a"]({router:Oy,store:ry,created(){window.panel.app=this,window.panel.plugins.created.forEach(t=>{t(this)}),this.$store.dispatch("content/init")},render:t=>t(T)}).$mount("#app")},"56f2":function(t,e,s){},"577a":function(t,e,s){},"580a":function(t,e,s){"use strict";s("ae29")},"5aee":function(t,e,s){"use strict";s("931e")},"5b23":function(t,e,s){"use strict";s("05be")},"5c0b":function(t,e,s){"use strict";s("9c0c")},"5c47":function(t,e,s){},"5c57":function(t,e,s){},"5cbe":function(t,e,s){},"5d33":function(t,e,s){"use strict";s("4e0b")},"5e2d":function(t,e,s){},"5e77":function(t,e,s){},"5e9a":function(t,e,s){"use strict";s("aa34")},"5f34":function(t,e,s){"use strict";s("b231")},"5f43":function(t,e,s){},"5f52":function(t,e,s){"use strict";s("26c3")},6018:function(t,e,s){"use strict";s("2a08")},"625a":function(t,e,s){"use strict";s("d3bb")},6284:function(t,e,s){"use strict";s.r(e);var i=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-input",{ref:"input",staticClass:"k-block-type-markdown-input",attrs:{buttons:!1,placeholder:t.placeholder,spellcheck:!1,value:t.content.text,type:"textarea"},on:{input:function(e){return t.update({text:e})}}})},n=[],a={computed:{placeholder(){return this.field("text",{}).placeholder}},methods:{focus(){this.$refs.input.focus()}}},r=a,o=(s("af44"),s("2877")),l=Object(o["a"])(r,i,n,!1,null,null,null);e["default"]=l.exports},"64e4":function(t,e,s){"use strict";s("99ed")},"653a":function(t,e,s){},"696b":function(t,e,s){"use strict";s("40a6")},6992:function(t,e,s){},"6a16":function(t,e,s){"use strict";s("ca47")},"6a18":function(t,e,s){"use strict";s("c57e")},"6ae1":function(t,e,s){},"6ae8":function(t,e,s){},"6bc0":function(t,e,s){},"6bcd":function(t,e,s){"use strict";s("d49c")},"6f7b":function(t,e,s){"use strict";s("f13c")},7041:function(t,e,s){},7086:function(t,e,s){},7187:function(t,e,s){},"718c":function(t,e,s){"use strict";s("43bf")},7491:function(t,e,s){},7568:function(t,e,s){"use strict";s("6bc0")},"772f":function(t,e,s){},7737:function(t,e,s){"use strict";s("2609")},7740:function(t,e,s){},7997:function(t,e,s){},"7a7d":function(t,e,s){"use strict";s("53fd")},"7b55":function(t,e,s){},"7d5d":function(t,e,s){"use strict";s("1e4a")},"7dc7":function(t,e,s){"use strict";s("6992")},"7e85":function(t,e,s){"use strict";s("f239")},"7f51":function(t,e,s){"use strict";s.r(e);var i=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",{staticClass:"k-block-type-heading-input",attrs:{"data-level":t.content.level}},[s("k-writer",{ref:"input",attrs:{inline:!0,marks:t.textField.marks,placeholder:t.textField.placeholder,value:t.content.text},on:{input:function(e){return t.update({text:e})}}})],1)},n=[],a={computed:{textField(){return this.field("text",{marks:!0})}},methods:{focus(){this.$refs.input.focus()}}},r=a,o=(s("455b"),s("2877")),l=Object(o["a"])(r,i,n,!1,null,null,null);e["default"]=l.exports},"7f6e":function(t,e,s){"use strict";s("772f")},8065:function(t,e,s){},8152:function(t,e,s){},8216:function(t,e,s){},"82b4":function(t,e,s){},"82c9":function(t,e,s){"use strict";s("e661")},"862b":function(t,e,s){"use strict";s("f0f6")},"86ab":function(t,e,s){},"86c7":function(t,e,s){s("5319"),RegExp.escape=function(t){return t.replace(new RegExp("[-/\\\\^$*+?.()[\\]{}]","gu"),"\\$&")}},"86eb":function(t,e,s){},"877d":function(t,e,s){},"893d":function(t,e,s){"use strict";s("fdbf")},"8a02":function(t,e,s){},"8abf":function(t,e,s){},"8c28":function(t,e,s){"use strict";s("4f8f")},"8d8b":function(t,e,s){"use strict";s("e292")},"8f7d":function(t,e,s){"use strict";s("c82a")},"907a":function(t,e,s){},"91a7":function(t,e,s){"use strict";s("653a")},"931e":function(t,e,s){},"96a5":function(t,e,s){"use strict";s("5c57")},9711:function(t,e,s){var i={"./Code.vue":"1bde","./Default.vue":"367b","./Gallery.vue":"3273","./Heading.vue":"7f51","./Image.vue":"9978","./List.vue":"1991","./Markdown.vue":"6284","./Quote.vue":"d55e","./Table.vue":"e54a","./Text.vue":"dc40","./Video.vue":"a08f"};function n(t){var e=a(t);return s(e)}function a(t){if(!s.o(i,t)){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}return i[t]}n.keys=function(){return Object.keys(i)},n.resolve=a,t.exports=n,n.id="9711"},"977f":function(t,e,s){"use strict";s("ccf4")},9799:function(t,e,s){"use strict";s("8152")},"98a1":function(t,e,s){"use strict";s("20f8")},9978:function(t,e,s){"use strict";s.r(e);var i=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-block-figure",{attrs:{caption:t.content.caption,"caption-marks":t.captionMarks,"empty-text":t.$t("field.blocks.image.placeholder")+" …","is-empty":!t.src,"empty-icon":"image"},on:{open:t.open,update:t.update}},[t.src?[t.ratio?s("k-aspect-ratio",{attrs:{ratio:t.ratio,cover:t.crop}},[s("img",{attrs:{alt:t.content.alt,src:t.src}})]):s("img",{staticClass:"k-block-type-image-auto",attrs:{alt:t.content.alt,src:t.src}})]:t._e()],2)},n=[],a={computed:{captionMarks(){return this.field("caption",{marks:!0}).marks},crop(){return this.content.crop||!1},src(){return"web"===this.content.location?this.content.src:!(!this.content.image[0]||!this.content.image[0].url)&&this.content.image[0].url},ratio(){return this.content.ratio||!1}}},r=a,o=(s("625a"),s("2877")),l=Object(o["a"])(r,i,n,!1,null,null,null);e["default"]=l.exports},"99ed":function(t,e,s){},"9aff":function(t,e,s){},"9bd5":function(t,e,s){"use strict";s("3e1e")},"9c0c":function(t,e,s){},"9c44":function(t,e,s){"use strict";s("56f2")},"9d40":function(t,e,s){},"9d48":function(t,e,s){},"9d9f":function(t,e,s){},"9e26":function(t,e,s){"use strict";s("9d9f")},"9efc":function(t,e,s){},a08f:function(t,e,s){"use strict";s.r(e);var i=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-block-figure",{attrs:{caption:t.content.caption,"empty-text":t.$t("field.blocks.video.placeholder")+" …","is-empty":!t.video,"empty-icon":"video"},on:{open:t.open,update:t.update}},[s("k-aspect-ratio",{attrs:{ratio:"16/9"}},[t.video?s("iframe",{attrs:{src:t.video}}):t._e()])],1)},n=[],a={computed:{video(){var t=this.content.url;if(!t)return!1;var e=/^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|&v=)([^#&?]*).*/,s=t.match(e);if(s)return"https://www.youtube.com/embed/"+s[2];var i=/vimeo\.com\/([0-9]+)/,n=t.match(i);return!!n&&"https://player.vimeo.com/video/"+n[1]}}},r=a,o=s("2877"),l=Object(o["a"])(r,i,n,!1,null,null,null);e["default"]=l.exports},a11f:function(t,e,s){},a134:function(t,e,s){"use strict";s("b329")},a2eb:function(t,e,s){},a567:function(t,e,s){"use strict";s("6ae8")},a5f3:function(t,e,s){"use strict";s("1174")},a659:function(t,e,s){"use strict";s("86eb")},a66d:function(t,e,s){"use strict";s("f464")},a901:function(t,e,s){},aa34:function(t,e,s){},ac27:function(t,e,s){"use strict";s("3dcf")},ae14:function(t,e,s){"use strict";s("7997")},ae1b:function(t,e,s){"use strict";s("e928")},ae29:function(t,e,s){},af44:function(t,e,s){"use strict";s("907a")},b0d6:function(t,e,s){"use strict";s("c6d0")},b231:function(t,e,s){},b329:function(t,e,s){},b5d2:function(t,e,s){"use strict";s("526c")},b746:function(t,e,s){"use strict";s("7187")},b7a8:function(t,e,s){"use strict";s("9efc")},b846:function(t,e,s){},ba8f:function(t,e,s){"use strict";s("0643")},bad3:function(t,e,s){},bb41:function(t,e,s){"use strict";s("49b6")},bbdf:function(t,e,s){"use strict";s("e729")},bd96:function(t,e,s){"use strict";s("e947")},bf53:function(t,e,s){"use strict";s("ecf0")},c08c:function(t,e,s){},c119:function(t,e,s){"use strict";s("8065")},c130:function(t,e,s){},c21a:function(t,e,s){"use strict";s("c577")},c24c:function(t,e,s){},c362:function(t,e,s){},c577:function(t,e,s){},c57e:function(t,e,s){},c6d0:function(t,e,s){},c7c8:function(t,e,s){"use strict";s("7086")},c82a:function(t,e,s){},c857:function(t,e,s){"use strict";s("022d")},c9cb:function(t,e,s){"use strict";s("577a")},ca47:function(t,e,s){},cb5b:function(t,e,s){},cb8f:function(t,e,s){"use strict";s("82b4")},cc79:function(t,e,s){"use strict";s("0de1")},cca8:function(t,e,s){"use strict";s("b846")},ccf4:function(t,e,s){},d0c1:function(t,e,s){"use strict";s("d4e5")},d221:function(t,e,s){"use strict";s("1a8b")},d3bb:function(t,e,s){},d49c:function(t,e,s){},d4e5:function(t,e,s){},d55e:function(t,e,s){"use strict";s.r(e);var i=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",{staticClass:"k-block-type-quote-editor"},[s("k-writer",{ref:"text",staticClass:"k-block-type-quote-text",attrs:{inline:!0,placeholder:t.textField.placeholder,value:t.content.text},on:{input:function(e){return t.update({text:e})}}}),s("k-writer",{ref:"citation",staticClass:"k-block-type-quote-citation",attrs:{inline:!0,placeholder:t.citationField.placeholder,value:t.content.citation},on:{input:function(e){return t.update({citation:e})}}})],1)},n=[],a={computed:{citationField(){return this.field("citation",{})},textField(){return this.field("text",{})}},methods:{focus(){this.$refs.text.focus()}}},r=a,o=(s("91a7"),s("2877")),l=Object(o["a"])(r,i,n,!1,null,null,null);e["default"]=l.exports},d6fc:function(t,e,s){"use strict";s("877d")},d733:function(t,e,s){},daa8:function(t,e,s){"use strict";s("04f3")},dc40:function(t,e,s){"use strict";s.r(e);var i=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-writer",{ref:"input",staticClass:"k-block-type-text-input",attrs:{nodes:!1,placeholder:t.placeholder,value:t.content.text},on:{input:function(e){return t.update({text:e})}}})},n=[],a={computed:{placeholder(){return this.field("text",{}).placeholder}},methods:{focus(){this.$refs.input.focus()}}},r=a,o=(s("f293"),s("2877")),l=Object(o["a"])(r,i,n,!1,null,null,null);e["default"]=l.exports},dd70:function(t,e,s){"use strict";s("a901")},ddfd:function(t,e,s){"use strict";s("7491")},df0d:function(t,e,s){"use strict";s("5c47")},e1f3:function(t,e,s){"use strict";s("3b07")},e292:function(t,e,s){},e2d7:function(t,e,s){},e54a:function(t,e,s){"use strict";s.r(e);var i=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("table",{staticClass:"k-block-type-table-preview",on:{dblclick:t.open}},[s("tr",t._l(t.columns,(function(e,i){return s("th",{key:i,attrs:{"data-align":e.align}},[t._v(" "+t._s(e.label)+" ")])})),0),0===t.rows.length?s("tr",[s("td",{attrs:{colspan:t.columnsCount}},[s("small",{staticClass:"k-block-type-table-preview-empty"},[t._v(t._s(t.$t("field.structure.empty")))])])]):t._l(t.rows,(function(e,i){return s("tr",{key:i},t._l(t.columns,(function(n,a){return s("td",{key:i+"-"+a,attrs:{"data-align":n.align}},[t._v(" "+t._s(n.before)+" "+t._s(e[a])+" "+t._s(n.after)+" ")])})),0)}))],2)},n=[],a={inheritAttrs:!1,computed:{columns(){return this.table.columns||this.table.fields||{}},columnsCount(){return Object.keys(this.columns).length},rows(){return this.content.rows||[]},table(){let t=null;return Object.values(this.fieldset.tabs).forEach(e=>{e.fields.rows&&(t=e.fields.rows)}),t||{}}}},r=a,o=(s("f635"),s("2877")),l=Object(o["a"])(r,i,n,!1,null,null,null);e["default"]=l.exports},e661:function(t,e,s){},e729:function(t,e,s){},e791:function(t,e,s){"use strict";s("2283")},e863:function(t,e,s){},e928:function(t,e,s){},e947:function(t,e,s){},ecf0:function(t,e,s){},ee15:function(t,e,s){"use strict";s("4c2e")},ee92:function(t,e,s){},efe1:function(t,e,s){},f0f6:function(t,e,s){},f13c:function(t,e,s){},f239:function(t,e,s){},f293:function(t,e,s){"use strict";s("c24c")},f3da:function(t,e,s){},f464:function(t,e,s){},f470:function(t,e,s){"use strict";s("cb5b")},f56d:function(t,e,s){"use strict";s("7041")},f635:function(t,e,s){"use strict";s("4bcb")},f6c2:function(t,e,s){"use strict";s("0c44")},f7f5:function(t,e,s){"use strict";s("7b55")},f8a7:function(t,e,s){"use strict";s("4d5b")},f95f:function(t,e,s){"use strict";s("0756")},f9aa:function(t,e,s){"use strict";s("5f43")},f9c1:function(t,e,s){},fa6a:function(t,e,s){"use strict";s("5e77")},fc0f:function(t,e,s){"use strict";s("a11f")},fdbf:function(t,e,s){}}); \ No newline at end of file diff --git a/kirby/panel/dist/js/plugins.js b/kirby/panel/dist/js/plugins.js index 25d927b..aeafda1 100755 --- a/kirby/panel/dist/js/plugins.js +++ b/kirby/panel/dist/js/plugins.js @@ -3,9 +3,7 @@ window.panel = window.panel || {}; window.panel.plugins = { components: {}, created: [], - fields: {}, icons: {}, - sections: {}, routes: [], use: [], views: {}, @@ -13,6 +11,18 @@ window.panel.plugins = { }; window.panel.plugin = function (plugin, parts) { + // Blocks + resolve(parts, "blocks", function (name, options) { + if (typeof options === "string") { + options = { template: options }; + } + + window.panel.plugins["components"][`k-block-type-${name}`] = { + extends: "k-block-type", + ...options + }; + }); + // Components resolve(parts, "components", function (name, options) { window.panel.plugins["components"][name] = options; @@ -20,7 +30,7 @@ window.panel.plugin = function (plugin, parts) { // Fields resolve(parts, "fields", function (name, options) { - window.panel.plugins["fields"][`k-${name}-field`] = options; + window.panel.plugins["components"][`k-${name}-field`] = options; }); // Icons @@ -30,7 +40,10 @@ window.panel.plugin = function (plugin, parts) { // Sections resolve(parts, "sections", function (name, options) { - window.panel.plugins["sections"][`k-${name}-section`] = options; + window.panel.plugins["components"][`k-${name}-section`] = { + ...options, + mixins: ["section"].concat(options.mixins || []) + }; }); // Vue.use diff --git a/kirby/panel/dist/js/vendor.js b/kirby/panel/dist/js/vendor.js index 6236c78..807501b 100755 --- a/kirby/panel/dist/js/vendor.js +++ b/kirby/panel/dist/js/vendor.js @@ -1,30 +1,30 @@ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-vendors"],{"00ee":function(t,e,n){var r=n("b622"),o=r("toStringTag"),i={};i[o]="z",t.exports="[object z]"===String(i)},"0234":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=Object.assign||function(t){for(var e=1;e0;(i>>>=1)&&(e+=e))1&i&&(n+=e);return n}},1276:function(t,e,n){"use strict";var r=n("d784"),o=n("44e7"),i=n("825a"),a=n("1d80"),s=n("4840"),c=n("8aa5"),u=n("50c4"),l=n("14c3"),f=n("9263"),d=n("d039"),p=[].push,h=Math.min,v=4294967295,g=!d((function(){return!RegExp(v,"y")}));r("split",2,(function(t,e,n){var r;return r="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(t,n){var r=String(a(this)),i=void 0===n?v:n>>>0;if(0===i)return[];if(void 0===t)return[r];if(!o(t))return e.call(r,t,i);var s,c,u,l=[],d=(t.ignoreCase?"i":"")+(t.multiline?"m":"")+(t.unicode?"u":"")+(t.sticky?"y":""),h=0,g=new RegExp(t.source,d+"g");while(s=f.call(g,r)){if(c=g.lastIndex,c>h&&(l.push(r.slice(h,s.index)),s.length>1&&s.index=i))break;g.lastIndex===s.index&&g.lastIndex++}return h===r.length?!u&&g.test("")||l.push(""):l.push(r.slice(h)),l.length>i?l.slice(0,i):l}:"0".split(void 0,0).length?function(t,n){return void 0===t&&0===n?[]:e.call(this,t,n)}:e,[function(e,n){var o=a(this),i=void 0==e?void 0:e[t];return void 0!==i?i.call(e,o,n):r.call(String(o),e,n)},function(t,o){var a=n(r,t,this,o,r!==e);if(a.done)return a.value;var f=i(t),d=String(this),p=s(f,RegExp),m=f.unicode,y=(f.ignoreCase?"i":"")+(f.multiline?"m":"")+(f.unicode?"u":"")+(g?"y":"g"),b=new p(g?f:"^(?:"+f.source+")",y),w=void 0===o?v:o>>>0;if(0===w)return[];if(0===d.length)return null===l(b,d)?[d]:[];var _=0,x=0,S=[];while(x1?arguments[1]:void 0)}},"19aa":function(t,e){t.exports=function(t,e,n){if(!(t instanceof e))throw TypeError("Incorrect "+(n?n+" ":"")+"invocation");return t}},"19e9":function(t,e,n){var r,o,i; +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-vendors"],{"0010":function(t,e,n){"use strict";n.d(e,"a",(function(){return N})),n.d(e,"b",(function(){return C})),n.d(e,"c",(function(){return m})),n.d(e,"d",(function(){return O})),n.d(e,"e",(function(){return k}));var r=n("0ac0"),o=n("304a"),i=n("5313");function a(t,e){return!t.selection.empty&&(e&&e(t.tr.deleteSelection().scrollIntoView()),!0)}function s(t,e,n){var o=t.selection,a=o.$cursor;if(!a||(n?!n.endOfTextblock("backward",t):a.parentOffset>0))return!1;var s=l(a);if(!s){var u=a.blockRange(),f=u&&Object(r["j"])(u);return null!=f&&(e&&e(t.tr.lift(u,f).scrollIntoView()),!0)}var p=s.nodeBefore;if(!p.type.spec.isolating&&S(t,s,e))return!0;if(0==a.parent.content.size&&(c(p,"end")||i["c"].isSelectable(p))){if(e){var d=t.tr.deleteRange(a.before(),a.after());d.setSelection(c(p,"end")?i["f"].findFrom(d.doc.resolve(d.mapping.map(s.pos,-1)),-1):i["c"].create(d.doc,s.pos-p.nodeSize)),e(d.scrollIntoView())}return!0}return!(!p.isAtom||s.depth!=a.depth-1)&&(e&&e(t.tr.delete(s.pos-p.nodeSize,s.pos).scrollIntoView()),!0)}function c(t,e){for(;t;t="start"==e?t.firstChild:t.lastChild)if(t.isTextblock)return!0;return!1}function u(t,e,n){var r=t.selection,o=r.$head,a=r.empty,s=o;if(!a)return!1;if(o.parent.isTextblock){if(n?!n.endOfTextblock("backward",t):o.parentOffset>0)return!1;s=l(o)}var c=s&&s.nodeBefore;return!(!c||!i["c"].isSelectable(c))&&(e&&e(t.tr.setSelection(i["c"].create(t.doc,s.pos-c.nodeSize)).scrollIntoView()),!0)}function l(t){if(!t.parent.type.spec.isolating)for(var e=t.depth-1;e>=0;e--){if(t.index(e)>0)return t.doc.resolve(t.before(e+1));if(t.node(e).type.spec.isolating)break}return null}function f(t,e,n){var r=t.selection,o=r.$cursor;if(!o||(n?!n.endOfTextblock("forward",t):o.parentOffset=0;e--){var n=t.node(e);if(t.index(e)+11&&o.after()!=o.end(-1)){var i=o.before();if(Object(r["f"])(t.doc,i))return e&&e(t.tr.split(i).scrollIntoView()),!0}var a=o.blockRange(),s=a&&Object(r["j"])(a);return null!=s&&(e&&e(t.tr.lift(a,s).scrollIntoView()),!0)}function b(t,e){var n=t.selection,a=n.$from,s=n.$to;if(t.selection instanceof i["c"]&&t.selection.node.isBlock)return!(!a.parentOffset||!Object(r["f"])(t.doc,a.pos))&&(e&&e(t.tr.split(a.pos).scrollIntoView()),!0);if(!a.parent.isBlock)return!1;if(e){var c=s.parentOffset==s.parent.content.size,u=t.tr;t.selection instanceof i["g"]&&u.deleteSelection();var l=0==a.depth?null:v(a.node(-1).contentMatchAt(a.indexAfter(-1))),f=c&&l?[{type:l}]:null,p=Object(r["f"])(u.doc,u.mapping.map(a.pos),1,f);f||p||!Object(r["f"])(u.doc,u.mapping.map(a.pos),1,l&&[{type:l}])||(f=[{type:l}],p=!0),p&&(u.split(u.mapping.map(a.pos),1,f),c||a.parentOffset||a.parent.type==l||!a.node(-1).canReplace(a.index(-1),a.indexAfter(-1),o["c"].from(l.create(),a.parent))||u.setNodeMarkup(u.mapping.map(a.before()),l)),e(u.scrollIntoView())}return!0}function w(t,e){return e&&e(t.tr.setSelection(new i["a"](t.doc))),!0}function x(t,e,n){var o=e.nodeBefore,i=e.nodeAfter,a=e.index();return!!(o&&i&&o.type.compatibleContent(i.type))&&(!o.content.size&&e.parent.canReplace(a-1,a)?(n&&n(t.tr.delete(e.pos-o.nodeSize,e.pos).scrollIntoView()),!0):!(!e.parent.canReplace(a,a+1)||!i.isTextblock&&!Object(r["e"])(t.doc,e.pos))&&(n&&n(t.tr.clearIncompatible(e.pos,o.type,o.contentMatchAt(o.childCount)).join(e.pos).scrollIntoView()),!0))}function S(t,e,n){var a,s,c=e.nodeBefore,u=e.nodeAfter;if(c.type.spec.isolating||u.type.spec.isolating)return!1;if(x(t,e,n))return!0;if(e.parent.canReplace(e.index(),e.index()+1)&&(a=(s=c.contentMatchAt(c.childCount)).findWrapping(u.type))&&s.matchType(a[0]||u.type).validEnd){if(n){for(var l=e.pos+u.nodeSize,f=o["c"].empty,p=a.length-1;p>=0;p--)f=o["c"].from(a[p].create(null,f));f=o["c"].from(c.copy(f));var d=t.tr.step(new r["b"](e.pos-1,l,e.pos,l,new o["j"](f,1,0),a.length,!0)),h=l+2*a.length;Object(r["e"])(d.doc,h)&&d.join(h),n(d.scrollIntoView())}return!0}var v=i["f"].findFrom(e,1),m=v&&v.$from.blockRange(v.$to),g=m&&Object(r["j"])(m);return null!=g&&g>=e.depth&&(n&&n(t.tr.lift(m,g).scrollIntoView()),!0)}function O(t,e){return function(n,r){var o=n.selection,i=o.from,a=o.to,s=!1;return n.doc.nodesBetween(i,a,(function(r,o){if(s)return!1;if(r.isTextblock&&!r.hasMarkup(t,e))if(r.type==t)s=!0;else{var i=n.doc.resolve(o),a=i.index();s=i.parent.canReplaceWith(a,a+1,t)}})),!!s&&(r&&r(n.tr.setBlockType(i,a,t,e).scrollIntoView()),!0)}}function _(t,e,n){for(var r=function(r){var o=e[r],i=o.$from,a=o.$to,s=0==i.depth&&t.type.allowsMarkType(n);if(t.nodesBetween(i.pos,a.pos,(function(t){if(s)return!1;s=t.inlineContent&&t.type.allowsMarkType(n)})),s)return{v:!0}},o=0;ot)break;var l=this.ranges[s+o],f=this.ranges[s+i],p=c+l;if(t<=p){var d=l?t==c?-1:t==p?1:e:e,h=c+r+(d<0?0:f);if(n)return h;var v=t==(e<0?c:p)?null:a(s/3,t-c);return new u(h,e<0?t!=c:t!=p,v)}r+=f-l}return n?t+r:new u(t+r)},l.prototype.touches=function(t,e){for(var n=0,r=s(e),o=this.inverted?2:1,i=this.inverted?1:2,a=0;at)break;var u=this.ranges[a+o],l=c+u;if(t<=l&&a==3*r)return!0;n+=this.ranges[a+i]-u}return!1},l.prototype.forEach=function(t){for(var e=this.inverted?2:1,n=this.inverted?1:2,r=0,o=0;r=0;e--){var r=t.getMirror(e);this.appendMap(t.maps[e].invert(),null!=r&&r>e?n-r-1:null)}},f.prototype.invert=function(){var t=new f;return t.appendMappingInverted(this),t},f.prototype.map=function(t,e){if(void 0===e&&(e=1),this.mirror)return this._map(t,e,!0);for(var n=this.from;no&&s0},d.prototype.addStep=function(t,e){this.docs.push(this.doc),this.steps.push(t),this.mapping.appendMap(t.getMap()),this.doc=e},Object.defineProperties(d.prototype,h);var m=Object.create(null),g=function(){};g.prototype.apply=function(t){return v()},g.prototype.getMap=function(){return l.empty},g.prototype.invert=function(t){return v()},g.prototype.map=function(t){return v()},g.prototype.merge=function(t){return null},g.prototype.toJSON=function(){return v()},g.fromJSON=function(t,e){if(!e||!e.stepType)throw new RangeError("Invalid input for Step.fromJSON");var n=m[e.stepType];if(!n)throw new RangeError("No step type "+e.stepType+" defined");return n.fromJSON(t,e)},g.jsonID=function(t,e){if(t in m)throw new RangeError("Duplicate use of step JSON ID "+t);return m[t]=e,e.prototype.jsonID=t,e};var y=function(t,e){this.doc=t,this.failed=e};y.ok=function(t){return new y(t,null)},y.fail=function(t){return new y(null,t)},y.fromReplace=function(t,e,n,o){try{return y.ok(t.replace(e,n,o))}catch(i){if(i instanceof r["h"])return y.fail(i.message);throw i}};var b=function(t){function e(e,n,r,o){t.call(this),this.from=e,this.to=n,this.slice=r,this.structure=!!o}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.apply=function(t){return this.structure&&x(t,this.from,this.to)?y.fail("Structure replace would overwrite content"):y.fromReplace(t,this.from,this.to,this.slice)},e.prototype.getMap=function(){return new l([this.from,this.to-this.from,this.slice.size])},e.prototype.invert=function(t){return new e(this.from,this.from+this.slice.size,t.slice(this.from,this.to))},e.prototype.map=function(t){var n=t.mapResult(this.from,1),r=t.mapResult(this.to,-1);return n.deleted&&r.deleted?null:new e(n.pos,Math.max(n.pos,r.pos),this.slice)},e.prototype.merge=function(t){if(!(t instanceof e)||t.structure!=this.structure)return null;if(this.from+this.slice.size!=t.from||this.slice.openEnd||t.slice.openStart){if(t.to!=this.from||this.slice.openStart||t.slice.openEnd)return null;var n=this.slice.size+t.slice.size==0?r["j"].empty:new r["j"](t.slice.content.append(this.slice.content),t.slice.openStart,this.slice.openEnd);return new e(t.from,this.to,n,this.structure)}var o=this.slice.size+t.slice.size==0?r["j"].empty:new r["j"](this.slice.content.append(t.slice.content),this.slice.openStart,t.slice.openEnd);return new e(this.from,this.to+(t.to-t.from),o,this.structure)},e.prototype.toJSON=function(){var t={stepType:"replace",from:this.from,to:this.to};return this.slice.size&&(t.slice=this.slice.toJSON()),this.structure&&(t.structure=!0),t},e.fromJSON=function(t,n){if("number"!=typeof n.from||"number"!=typeof n.to)throw new RangeError("Invalid input for ReplaceStep.fromJSON");return new e(n.from,n.to,r["j"].fromJSON(t,n.slice),!!n.structure)},e}(g);g.jsonID("replace",b);var w=function(t){function e(e,n,r,o,i,a,s){t.call(this),this.from=e,this.to=n,this.gapFrom=r,this.gapTo=o,this.slice=i,this.insert=a,this.structure=!!s}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.apply=function(t){if(this.structure&&(x(t,this.from,this.gapFrom)||x(t,this.gapTo,this.to)))return y.fail("Structure gap-replace would overwrite content");var e=t.slice(this.gapFrom,this.gapTo);if(e.openStart||e.openEnd)return y.fail("Gap is not a flat range");var n=this.slice.insertAt(this.insert,e.content);return n?y.fromReplace(t,this.from,this.to,n):y.fail("Content does not fit in gap")},e.prototype.getMap=function(){return new l([this.from,this.gapFrom-this.from,this.insert,this.gapTo,this.to-this.gapTo,this.slice.size-this.insert])},e.prototype.invert=function(t){var n=this.gapTo-this.gapFrom;return new e(this.from,this.from+this.slice.size+n,this.from+this.insert,this.from+this.insert+n,t.slice(this.from,this.to).removeBetween(this.gapFrom-this.from,this.gapTo-this.from),this.gapFrom-this.from,this.structure)},e.prototype.map=function(t){var n=t.mapResult(this.from,1),r=t.mapResult(this.to,-1),o=t.map(this.gapFrom,-1),i=t.map(this.gapTo,1);return n.deleted&&r.deleted||or.pos?null:new e(n.pos,r.pos,o,i,this.slice,this.insert,this.structure)},e.prototype.toJSON=function(){var t={stepType:"replaceAround",from:this.from,to:this.to,gapFrom:this.gapFrom,gapTo:this.gapTo,insert:this.insert};return this.slice.size&&(t.slice=this.slice.toJSON()),this.structure&&(t.structure=!0),t},e.fromJSON=function(t,n){if("number"!=typeof n.from||"number"!=typeof n.to||"number"!=typeof n.gapFrom||"number"!=typeof n.gapTo||"number"!=typeof n.insert)throw new RangeError("Invalid input for ReplaceAroundStep.fromJSON");return new e(n.from,n.to,n.gapFrom,n.gapTo,r["j"].fromJSON(t,n.slice),n.insert,!!n.structure)},e}(g);function x(t,e,n){var r=t.resolve(e),o=n-e,i=r.depth;while(o>0&&i>0&&r.indexAfter(i)==r.node(i).childCount)i--,o--;if(o>0){var a=r.node(i).maybeChild(r.indexAfter(i));while(o>0){if(!a||a.isLeaf)return!0;a=a.firstChild,o--}}return!1}function S(t,e,n){return(0==e||t.canReplace(e,t.childCount))&&(n==t.childCount||t.canReplace(0,n))}function O(t){for(var e=t.parent,n=e.content.cutByIndex(t.startIndex,t.endIndex),r=t.depth;;--r){var o=t.$from.node(r),i=t.$from.index(r),a=t.$to.indexAfter(r);if(ri;s--,c--){var u=o.node(s),l=o.index(s);if(u.type.spec.isolating)return!1;var f=u.content.cutByIndex(l,u.childCount),p=r&&r[c]||u;if(p!=u&&(f=f.replaceChild(0,p.type.create(p.attrs))),!u.canReplace(l+1,u.childCount)||!p.type.validContent(f))return!1}var d=o.indexAfter(i),h=r&&r[0];return o.node(i).canReplaceWith(d,d,h?h.type:o.node(i+1).type)}function T(t,e){var n=t.resolve(e),r=n.index();return $(n.nodeBefore,n.nodeAfter)&&n.parent.canReplace(r,r+1)}function $(t,e){return t&&e&&!t.isLeaf&&t.canAppend(e)}function D(t,e,n){void 0===n&&(n=-1);for(var r=t.resolve(e),o=r.depth;;o--){var i=void 0,a=void 0,s=r.index(o);if(o==r.depth?(i=r.nodeBefore,a=r.nodeAfter):n>0?(i=r.node(o+1),s++,a=r.node(o).maybeChild(s)):(i=r.node(o).maybeChild(s-1),a=r.node(o+1)),i&&!i.isTextblock&&$(i,a)&&r.node(o).canReplace(s,s+1))return e;if(0==o)break;e=n<0?r.before(o):r.after(o)}}function N(t,e,n){var r=t.resolve(e);if(r.parent.canReplaceWith(r.index(),r.index(),n))return e;if(0==r.parentOffset)for(var o=r.depth-1;o>=0;o--){var i=r.index(o);if(r.node(o).canReplaceWith(i,i,n))return r.before(o+1);if(i>0)return null}if(r.parentOffset==r.parent.content.size)for(var a=r.depth-1;a>=0;a--){var s=r.indexAfter(a);if(r.node(a).canReplaceWith(s,s,n))return r.after(a+1);if(s=0;s--){var c=s==r.depth?0:r.pos<=(r.start(s+1)+r.end(s+1))/2?-1:1,u=r.index(s)+(c>0?1:0);if(1==a?r.node(s).canReplace(u,u,o):r.node(s).contentMatchAt(u).findWrapping(o.firstChild.type))return 0==c?r.pos:c<0?r.before(s+1):r.after(s+1)}return null}function j(t,e,n){for(var o=[],i=0;ie;p--)d||n.index(p)>0?(d=!0,l=r["c"].from(n.node(p).copy(l)),f++):c--;for(var h=r["c"].empty,v=0,m=i,g=!1;m>e;m--)g||o.after(m+1)=0;o--)n=r["c"].from(e[o].type.create(e[o].attrs,n));var i=t.start,a=t.end;return this.step(new w(i,a,i,a,new r["j"](n,0,0),e.length,!0))},d.prototype.setBlockType=function(t,e,n,o){var i=this;if(void 0===e&&(e=t),!n.isTextblock)throw new RangeError("Type given to setBlockType should be a textblock");var a=this.steps.length;return this.doc.nodesBetween(t,e,(function(t,e){if(t.isTextblock&&!t.hasMarkup(n,o)&&E(i.doc,i.mapping.slice(a).map(e),n)){i.clearIncompatible(i.mapping.slice(a).map(e,1),n);var s=i.mapping.slice(a),c=s.map(e,1),u=s.map(e+t.nodeSize,1);return i.step(new w(c,u,c+1,u-1,new r["j"](r["c"].from(n.create(o,null,t.marks)),0,0),1,!0)),!1}})),this},d.prototype.setNodeMarkup=function(t,e,n,o){var i=this.doc.nodeAt(t);if(!i)throw new RangeError("No node at given position");e||(e=i.type);var a=e.create(n,null,o||i.marks);if(i.isLeaf)return this.replaceWith(t,t+i.nodeSize,a);if(!e.validContent(i.content))throw new RangeError("Invalid content for node type "+e.name);return this.step(new w(t,t+i.nodeSize,t+1,t+i.nodeSize-1,new r["j"](r["c"].from(a),0,0),1,!0))},d.prototype.split=function(t,e,n){void 0===e&&(e=1);for(var o=this.doc.resolve(t),i=r["c"].empty,a=r["c"].empty,s=o.depth,c=o.depth-e,u=e-1;s>c;s--,u--){i=r["c"].from(o.node(s).copy(i));var l=n&&n[u];a=r["c"].from(l?l.type.create(l.attrs,a):o.node(s).copy(a))}return this.step(new b(t,t,new r["j"](i.append(a),e,e),!0))},d.prototype.join=function(t,e){void 0===e&&(e=1);var n=new b(t-e,t+e,r["j"].empty,!0);return this.step(n)};var I=function(t){function e(e,n,r){t.call(this),this.from=e,this.to=n,this.mark=r}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.apply=function(t){var e=this,n=t.slice(this.from,this.to),o=t.resolve(this.from),i=o.node(o.sharedDepth(this.to)),a=new r["j"](j(n.content,(function(t,n){return n.type.allowsMarkType(e.mark.type)?t.mark(e.mark.addToSet(t.marks)):t}),i),n.openStart,n.openEnd);return y.fromReplace(t,this.from,this.to,a)},e.prototype.invert=function(){return new R(this.from,this.to,this.mark)},e.prototype.map=function(t){var n=t.mapResult(this.from,1),r=t.mapResult(this.to,-1);return n.deleted&&r.deleted||n.pos>=r.pos?null:new e(n.pos,r.pos,this.mark)},e.prototype.merge=function(t){if(t instanceof e&&t.mark.eq(this.mark)&&this.from<=t.to&&this.to>=t.from)return new e(Math.min(this.from,t.from),Math.max(this.to,t.to),this.mark)},e.prototype.toJSON=function(){return{stepType:"addMark",mark:this.mark.toJSON(),from:this.from,to:this.to}},e.fromJSON=function(t,n){if("number"!=typeof n.from||"number"!=typeof n.to)throw new RangeError("Invalid input for AddMarkStep.fromJSON");return new e(n.from,n.to,t.markFromJSON(n.mark))},e}(g);g.jsonID("addMark",I);var R=function(t){function e(e,n,r){t.call(this),this.from=e,this.to=n,this.mark=r}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.apply=function(t){var e=this,n=t.slice(this.from,this.to),o=new r["j"](j(n.content,(function(t){return t.mark(e.mark.removeFromSet(t.marks))})),n.openStart,n.openEnd);return y.fromReplace(t,this.from,this.to,o)},e.prototype.invert=function(){return new I(this.from,this.to,this.mark)},e.prototype.map=function(t){var n=t.mapResult(this.from,1),r=t.mapResult(this.to,-1);return n.deleted&&r.deleted||n.pos>=r.pos?null:new e(n.pos,r.pos,this.mark)},e.prototype.merge=function(t){if(t instanceof e&&t.mark.eq(this.mark)&&this.from<=t.to&&this.to>=t.from)return new e(Math.min(this.from,t.from),Math.max(this.to,t.to),this.mark)},e.prototype.toJSON=function(){return{stepType:"removeMark",mark:this.mark.toJSON(),from:this.from,to:this.to}},e.fromJSON=function(t,n){if("number"!=typeof n.from||"number"!=typeof n.to)throw new RangeError("Invalid input for RemoveMarkStep.fromJSON");return new e(n.from,n.to,t.markFromJSON(n.mark))},e}(g);function L(t,e,n,o){if(void 0===n&&(n=e),void 0===o&&(o=r["j"].empty),e==n&&!o.size)return null;var i=t.resolve(e),a=t.resolve(n);return z(i,a,o)?new b(e,n,o):new F(i,a,o).fit()}function z(t,e,n){return!n.openStart&&!n.openEnd&&t.start()==e.start()&&t.parent.canReplace(t.index(),e.index(),n.content)}g.jsonID("removeMark",R),d.prototype.addMark=function(t,e,n){var r=this,o=[],i=[],a=null,s=null;return this.doc.nodesBetween(t,e,(function(r,c,u){if(r.isInline){var l=r.marks;if(!n.isInSet(l)&&u.type.allowsMarkType(n.type)){for(var f=Math.max(c,t),p=Math.min(c+r.nodeSize,e),d=n.addToSet(l),h=0;h=0;d--)this.step(i[d]);return this},d.prototype.replace=function(t,e,n){void 0===e&&(e=t),void 0===n&&(n=r["j"].empty);var o=L(this.doc,t,e,n);return o&&this.step(o),this},d.prototype.replaceWith=function(t,e,n){return this.replace(t,e,new r["j"](r["c"].from(n),0,0))},d.prototype.delete=function(t,e){return this.replace(t,e,r["j"].empty)},d.prototype.insert=function(t,e){return this.replaceWith(t,t,e)};var F=function(t,e,n){this.$to=e,this.$from=t,this.unplaced=n,this.frontier=[];for(var o=0;o<=t.depth;o++){var i=t.node(o);this.frontier.push({type:i.type,match:i.contentMatchAt(t.indexAfter(o))})}this.placed=r["c"].empty;for(var a=t.depth;a>0;a--)this.placed=r["c"].from(t.node(a).copy(this.placed))},B={depth:{configurable:!0}};function V(t,e,n){return 0==e?t.cutByIndex(n):t.replaceChild(0,t.firstChild.copy(V(t.firstChild.content,e-1,n)))}function q(t,e,n){return 0==e?t.append(n):t.replaceChild(t.childCount-1,t.lastChild.copy(q(t.lastChild.content,e-1,n)))}function H(t,e){for(var n=0;n1&&(o=o.replaceChild(0,W(o.firstChild,e-1,1==o.childCount?n-1:0))),e>0&&(o=t.type.contentMatch.fillBefore(o).append(o),n<=0&&(o=o.append(t.type.contentMatch.matchFragment(o).fillBefore(r["c"].empty,!0)))),t.copy(o)}function U(t,e,n,r,o){var i=t.node(e),a=o?t.indexAfter(e):t.index(e);if(a==i.childCount&&!n.compatibleContent(i.type))return null;var s=r.fillBefore(i.content,!0,a);return s&&!K(n,i.content,a)?s:null}function K(t,e,n){for(var r=n;ro){var s=i.contentMatchAt(0),c=s.fillBefore(t).append(t);t=c.append(s.matchFragment(c).fillBefore(r["c"].empty,!0))}return t}function Y(t,e){for(var n=[],r=Math.min(t.depth,e.depth),o=r;o>=0;o--){var i=t.start(o);if(ie.pos+(e.depth-o)||t.node(o).type.spec.isolating||e.node(o).type.spec.isolating)break;i==e.start(o)&&n.push(o)}return n}B.depth.get=function(){return this.frontier.length-1},F.prototype.fit=function(){while(this.unplaced.size){var t=this.findFittable();t?this.placeNodes(t):this.openMore()||this.dropNode()}var e=this.mustMoveInline(),n=this.placed.size-this.depth-this.$from.depth,o=this.$from,i=this.close(e<0?this.$to:o.doc.resolve(e));if(!i)return null;var a=this.placed,s=o.depth,c=i.depth;while(s&&c&&1==a.childCount)a=a.firstChild.content,s--,c--;var u=new r["j"](a,s,c);return e>-1?new w(o.pos,e,this.$to.pos,this.$to.end(),u,n):u.size||o.pos!=this.$to.pos?new b(o.pos,i.pos,u):void 0},F.prototype.findFittable=function(){for(var t=1;t<=2;t++)for(var e=this.unplaced.openStart;e>=0;e--){var n=void 0,o=void 0;e?(o=H(this.unplaced.content,e-1).firstChild,n=o.content):n=this.unplaced.content;for(var i=n.firstChild,a=this.depth;a>=0;a--){var s=this.frontier[a],c=s.type,u=s.match,l=void 0,f=void 0;if(1==t&&(i?u.matchType(i.type)||(f=u.fillBefore(r["c"].from(i),!1)):c.compatibleContent(o.type)))return{sliceDepth:e,frontierDepth:a,parent:o,inject:f};if(2==t&&i&&(l=u.findWrapping(i.type)))return{sliceDepth:e,frontierDepth:a,parent:o,wrap:l};if(o&&u.matchType(o.type))break}}},F.prototype.openMore=function(){var t=this.unplaced,e=t.content,n=t.openStart,o=t.openEnd,i=H(e,n);return!(!i.childCount||i.firstChild.isLeaf)&&(this.unplaced=new r["j"](e,n+1,Math.max(o,i.size+n>=e.size-o?n+1:0)),!0)},F.prototype.dropNode=function(){var t=this.unplaced,e=t.content,n=t.openStart,o=t.openEnd,i=H(e,n);if(i.childCount<=1&&n>0){var a=e.size-n<=n+i.size;this.unplaced=new r["j"](V(e,n-1,1),n-1,a?n-1:o)}else this.unplaced=new r["j"](V(e,n,1),n,o)},F.prototype.placeNodes=function(t){var e=t.sliceDepth,n=t.frontierDepth,o=t.parent,i=t.inject,a=t.wrap;while(this.depth>n)this.closeFrontierNode();if(a)for(var s=0;s1||0==l||y.content.size)&&(h=b,p.push(W(y.mark(v.allowedMarks(y.marks)),1==f?l:0,f==u.childCount?g:-1)))}var w=f==u.childCount;w||(g=-1),this.placed=q(this.placed,n,r["c"].from(p)),this.frontier[n].match=h,w&&g<0&&o&&o.type==this.frontier[this.depth].type&&this.frontier.length>1&&this.closeFrontierNode();for(var x=0,S=u;x1&&o==this.$to.end(--r))++o;return o},F.prototype.findCloseLevel=function(t){t:for(var e=Math.min(this.depth,t.depth);e>=0;e--){var n=this.frontier[e],r=n.match,o=n.type,i=e=0;s--){var c=this.frontier[s],u=c.match,l=c.type,f=U(t,s,l,u,!0);if(!f||f.childCount)continue t}return{depth:e,fit:a,move:i?t.doc.resolve(t.after(e+1)):t}}}},F.prototype.close=function(t){var e=this.findCloseLevel(t);if(!e)return null;while(this.depth>e.depth)this.closeFrontierNode();e.fit.childCount&&(this.placed=q(this.placed,e.depth,e.fit)),t=e.move;for(var n=e.depth+1;n<=t.depth;n++){var r=t.node(n),o=r.type.contentMatch.fillBefore(r.content,!0,t.index(n));this.openFrontierNode(r.type,r.attrs,o)}return t},F.prototype.openFrontierNode=function(t,e,n){var o=this.frontier[this.depth];o.match=o.match.matchType(t),this.placed=q(this.placed,this.depth,r["c"].from(t.create(e,n))),this.frontier.push({type:t,match:t.contentMatch})},F.prototype.closeFrontierNode=function(){var t=this.frontier.pop(),e=t.match.fillBefore(r["c"].empty,!0);e.childCount&&(this.placed=q(this.placed,this.frontier.length,e))},Object.defineProperties(F.prototype,B),d.prototype.replaceRange=function(t,e,n){if(!n.size)return this.deleteRange(t,e);var o=this.doc.resolve(t),i=this.doc.resolve(e);if(z(o,i,n))return this.step(new b(t,e,n));var a=Y(o,this.doc.resolve(e));0==a[a.length-1]&&a.pop();var s=-(o.depth+1);a.unshift(s);for(var c=o.depth,u=o.pos-1;c>0;c--,u--){var l=o.node(c).type.spec;if(l.defining||l.isolating)break;a.indexOf(c)>-1?s=c:o.before(c)==u&&a.splice(1,0,-c)}for(var f=a.indexOf(s),p=[],d=n.openStart,h=n.content,v=0;;v++){var m=h.firstChild;if(p.push(m),v==n.openStart)break;h=m.content}d>0&&p[d-1].type.spec.defining&&o.node(f).type!=p[d-1].type?d-=1:d>=2&&p[d-1].isTextblock&&p[d-2].type.spec.defining&&o.node(f).type!=p[d-2].type&&(d-=2);for(var g=n.openStart;g>=0;g--){var y=(g+d+1)%(n.openStart+1),w=p[y];if(w)for(var x=0;x=0;M--){if(this.replace(t,e,n),this.steps.length>C)break;var E=a[M];M<0||(t=o.before(E),e=i.after(E))}return this},d.prototype.replaceRangeWith=function(t,e,n){if(!n.isInline&&t==e&&this.doc.resolve(t).parent.content.size){var o=N(this.doc,t,n.type);null!=o&&(t=e=o)}return this.replaceRange(t,e,new r["j"](r["c"].from(n),0,0))},d.prototype.deleteRange=function(t,e){for(var n=this.doc.resolve(t),r=this.doc.resolve(e),o=Y(n,r),i=0;i0&&(s||n.node(a-1).canReplace(n.index(a-1),r.indexAfter(a-1))))return this.delete(n.before(a),r.after(a))}for(var c=1;c<=n.depth&&c<=r.depth;c++)if(t-n.start(c)==n.depth-c&&e>n.end(c)&&r.end(c)-e!=r.depth-c)return this.delete(n.before(c),e);return this.delete(t,e)}},"0cfb":function(t,e,n){var r=n("83ab"),o=n("d039"),i=n("cc12");t.exports=!r&&!o((function(){return 7!=Object.defineProperty(i("div"),"a",{get:function(){return 7}}).a}))},"0ecf":function(t,e,n){!function(e,n){t.exports=n()}(0,(function(){"use strict";return function(t,e,n){var r=e.prototype;n.utc=function(t){return new e({date:t,utc:!0,args:arguments})},r.utc=function(t){var e=n(this.toDate(),{locale:this.$L,utc:!0});return t?e.add(this.utcOffset(),"minute"):e},r.local=function(){return n(this.toDate(),{locale:this.$L,utc:!1})};var o=r.parse;r.parse=function(t){t.utc&&(this.$u=!0),this.$utils().u(t.$offset)||(this.$offset=t.$offset),o.call(this,t)};var i=r.init;r.init=function(){if(this.$u){var t=this.$d;this.$y=t.getUTCFullYear(),this.$M=t.getUTCMonth(),this.$D=t.getUTCDate(),this.$W=t.getUTCDay(),this.$H=t.getUTCHours(),this.$m=t.getUTCMinutes(),this.$s=t.getUTCSeconds(),this.$ms=t.getUTCMilliseconds()}else i.call(this)};var a=r.utcOffset;r.utcOffset=function(t,e){var n=this.$utils().u;if(n(t))return this.$u?0:n(this.$offset)?a.call(this):this.$offset;var r=Math.abs(t)<=16?60*t:t,o=this;if(e)return o.$offset=r,o.$u=0===t,o;if(0!==t){var i=this.$u?this.toDate().getTimezoneOffset():-1*this.utcOffset();(o=this.local().add(r+i,"minute")).$offset=r,o.$x.$localOffset=i}else o=this.utc();return o};var s=r.format;r.format=function(t){var e=t||(this.$u?"YYYY-MM-DDTHH:mm:ss[Z]":"");return s.call(this,e)},r.valueOf=function(){var t=this.$utils().u(this.$offset)?0:this.$offset+(this.$x.$localOffset||(new Date).getTimezoneOffset());return this.$d.valueOf()-6e4*t},r.isUTC=function(){return!!this.$u},r.toISOString=function(){return this.toDate().toISOString()},r.toString=function(){return this.toDate().toUTCString()};var c=r.toDate;r.toDate=function(t){return"s"===t&&this.$offset?n(this.format("YYYY-MM-DD HH:mm:ss:SSS")).toDate():c.call(this)};var u=r.diff;r.diff=function(t,e,r){if(this.$u===t.$u)return u.call(this,t,e,r);var o=this.local(),i=n(t).local();return u.call(o,i,e,r)}}}))},1331:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var r=n("78ef"),o=(0,r.regex)("integer",/(^[0-9]*$)|(^-[0-9]+$)/);e.default=o},"13d5":function(t,e,n){"use strict";var r=n("23e7"),o=n("d58f").left,i=n("a640"),a=n("ae40"),s=n("2d00"),c=n("605d"),u=i("reduce"),l=a("reduce",{1:0}),f=!c&&s>79&&s<83;r({target:"Array",proto:!0,forced:!u||!l||f},{reduce:function(t){return o(this,t,arguments.length,arguments.length>1?arguments[1]:void 0)}})},"14c3":function(t,e,n){var r=n("c6b6"),o=n("9263");t.exports=function(t,e){var n=t.exec;if("function"===typeof n){var i=n.call(t,e);if("object"!==typeof i)throw TypeError("RegExp exec method returned something other than an Object or null");return i}if("RegExp"!==r(t))throw TypeError("RegExp#exec called on incompatible receiver");return o.call(t,e)}},"19e9":function(t,e,n){var r,o,i; /*! autosize 4.0.2 license: MIT http://www.jacklmoore.com/autosize -*/(function(n,a){o=[t,e],r=a,i="function"===typeof r?r.apply(e,o):r,void 0===i||(t.exports=i)})(0,(function(t,e){"use strict";var n="function"===typeof Map?new Map:function(){var t=[],e=[];return{has:function(e){return t.indexOf(e)>-1},get:function(n){return e[t.indexOf(n)]},set:function(n,r){-1===t.indexOf(n)&&(t.push(n),e.push(r))},delete:function(n){var r=t.indexOf(n);r>-1&&(t.splice(r,1),e.splice(r,1))}}}(),r=function(t){return new Event(t,{bubbles:!0})};try{new Event("test")}catch(c){r=function(t){var e=document.createEvent("Event");return e.initEvent(t,!0,!1),e}}function o(t){if(t&&t.nodeName&&"TEXTAREA"===t.nodeName&&!n.has(t)){var e=null,o=null,i=null,a=function(){t.clientWidth!==o&&d()},s=function(e){window.removeEventListener("resize",a,!1),t.removeEventListener("input",d,!1),t.removeEventListener("keyup",d,!1),t.removeEventListener("autosize:destroy",s,!1),t.removeEventListener("autosize:update",d,!1),Object.keys(e).forEach((function(n){t.style[n]=e[n]})),n.delete(t)}.bind(t,{height:t.style.height,resize:t.style.resize,overflowY:t.style.overflowY,overflowX:t.style.overflowX,wordWrap:t.style.wordWrap});t.addEventListener("autosize:destroy",s,!1),"onpropertychange"in t&&"oninput"in t&&t.addEventListener("keyup",d,!1),window.addEventListener("resize",a,!1),t.addEventListener("input",d,!1),t.addEventListener("autosize:update",d,!1),t.style.overflowX="hidden",t.style.wordWrap="break-word",n.set(t,{destroy:s,update:d}),c()}function c(){var n=window.getComputedStyle(t,null);"vertical"===n.resize?t.style.resize="none":"both"===n.resize&&(t.style.resize="horizontal"),e="content-box"===n.boxSizing?-(parseFloat(n.paddingTop)+parseFloat(n.paddingBottom)):parseFloat(n.borderTopWidth)+parseFloat(n.borderBottomWidth),isNaN(e)&&(e=0),d()}function u(e){var n=t.style.width;t.style.width="0px",t.offsetWidth,t.style.width=n,t.style.overflowY=e}function l(t){var e=[];while(t&&t.parentNode&&t.parentNode instanceof Element)t.parentNode.scrollTop&&e.push({node:t.parentNode,scrollTop:t.parentNode.scrollTop}),t=t.parentNode;return e}function f(){if(0!==t.scrollHeight){var n=l(t),r=document.documentElement&&document.documentElement.scrollTop;t.style.height="",t.style.height=t.scrollHeight+e+"px",o=t.clientWidth,n.forEach((function(t){t.node.scrollTop=t.scrollTop})),r&&(document.documentElement.scrollTop=r)}}function d(){f();var e=Math.round(parseFloat(t.style.height)),n=window.getComputedStyle(t,null),o="content-box"===n.boxSizing?Math.round(parseFloat(n.height)):t.offsetHeight;if(o1?a:a.$sub[0]:null;return{output:o,params:s}}},computed:{run:function(){return this.runRule(this.lazyParentModel())},$params:function(){return this.run.params},proxy:function(){var t=this.run.output;return t[d]?!!t.v:!!t},$pending:function(){var t=this.run.output;return!!t[d]&&t.p}}}),c=e.extend({data:function(){return{dirty:!1,validations:null,lazyModel:null,model:null,prop:null,lazyParentModel:null,rootModel:null}},methods:r({},g,{refProxy:function(t){return this.getRef(t).proxy},getRef:function(t){return this.refs[t]},isNested:function(t){return"function"!==typeof this.validations[t]}}),computed:r({},h,{nestedKeys:function(){return this.keys.filter(this.isNested)},ruleKeys:function(){var t=this;return this.keys.filter((function(e){return!t.isNested(e)}))},keys:function(){return Object.keys(this.validations).filter((function(t){return"$params"!==t}))},proxy:function(){var t=this,e=s(this.keys,(function(e){return{enumerable:!0,configurable:!0,get:function(){return t.refProxy(e)}}})),n=s(m,(function(e){return{enumerable:!0,configurable:!0,get:function(){return t[e]}}})),o=s(y,(function(e){return{enumerable:!1,configurable:!0,get:function(){return t[e]}}}));return Object.defineProperties({},r({},e,n,o))},children:function(){var t=this;return[].concat(this.nestedKeys.map((function(e){return _(t,e)})),this.ruleKeys.map((function(e){return x(t,e)}))).filter(Boolean)}})}),v=c.extend({methods:{isNested:function(t){return"undefined"!==typeof this.validations[t]()},getRef:function(t){var e=this;return{get proxy(){return e.validations[t]()||!1}}}}}),w=c.extend({computed:{keys:function(){var t=this.getModel();return u(t)?Object.keys(t):[]},tracker:function(){var t=this,e=this.validations.$trackBy;return e?function(n){return""+f(t.rootModel,t.getModelKey(n),e)}:function(t){return""+t}},eagerParentModel:function(){var t=this.lazyParentModel();return function(){return t}},children:function(){var t=this,e=this.validations,n=this.getModel(),i=r({},e);delete i["$trackBy"];var a={};return this.keys.map((function(e){var r=t.tracker(e);return a.hasOwnProperty(r)?null:(a[r]=!0,(0,o.h)(c,r,{validations:i,prop:e,lazyParentModel:t.eagerParentModel,model:n[e],rootModel:t.rootModel}))})).filter(Boolean)}},methods:{isNested:function(){return!0},getRef:function(t){return this.refs[this.tracker(t)]}}}),_=function(t,e){if("$each"===e)return(0,o.h)(w,e,{validations:t.validations[e],lazyParentModel:t.lazyParentModel,prop:e,lazyModel:t.getModel,rootModel:t.rootModel});var n=t.validations[e];if(Array.isArray(n)){var r=t.rootModel,i=s(n,(function(t){return function(){return f(r,r.$v,t)}}),(function(t){return Array.isArray(t)?t.join("."):t}));return(0,o.h)(v,e,{validations:i,lazyParentModel:a,prop:e,lazyModel:a,rootModel:r})}return(0,o.h)(c,e,{validations:n,lazyParentModel:t.getModel,prop:e,lazyModel:t.getModelKey,rootModel:t.rootModel})},x=function(t,e){return(0,o.h)(n,e,{rule:t.validations[e],lazyParentModel:t.lazyParentModel,lazyModel:t.getModel,rootModel:t.rootModel})};return b={VBase:e,Validation:c},b},_=null;function x(t){if(_)return _;var e=t.constructor;while(e.super)e=e.super;return _=e,e}var S=function(t,e){var n=x(t),r=w(n),i=r.Validation,s=r.VBase,c=new s({computed:{children:function(){var n="function"===typeof e?e.call(t):e;return[(0,o.h)(i,"$v",{validations:n,lazyParentModel:a,prop:"$v",model:t,rootModel:t})]}}});return c},O={data:function(){var t=this.$options.validations;return t&&(this._vuelidate=S(this,t)),{}},beforeCreate:function(){var t=this.$options,e=t.validations;e&&(t.computed||(t.computed={}),t.computed.$v||(t.computed.$v=function(){return this._vuelidate?this._vuelidate.refs.$v.proxy:null}))},beforeDestroy:function(){this._vuelidate&&(this._vuelidate.$destroy(),this._vuelidate=null)}};function E(t){t.mixin(O)}e.Vuelidate=E,e.validationMixin=O,e.withParams=i.withParams,e.default=E},"1dde":function(t,e,n){var r=n("d039"),o=n("b622"),i=n("2d00"),a=o("species");t.exports=function(t){return i>=51||!r((function(){var e=[],n=e.constructor={};return n[a]=function(){return{foo:1}},1!==e[t](Boolean).foo}))}},2266:function(t,e,n){var r=n("825a"),o=n("e95a"),i=n("50c4"),a=n("0366"),s=n("35a1"),c=n("9bdd"),u=function(t,e){this.stopped=t,this.result=e},l=t.exports=function(t,e,n,l,f){var d,p,h,v,g,m,y,b=a(e,n,l?2:1);if(f)d=t;else{if(p=s(t),"function"!=typeof p)throw TypeError("Target is not iterable");if(o(p)){for(h=0,v=i(t.length);v>h;h++)if(g=l?b(r(y=t[h])[0],y[1]):b(t[h]),g&&g instanceof u)return g;return new u(!1)}d=p.call(t)}m=d.next;while(!(y=m.call(d)).done)if(g=c(d,b,y.value,l),"object"==typeof g&&g&&g instanceof u)return g;return new u(!1)};l.stop=function(t){return new u(!0,t)}},"23cb":function(t,e,n){var r=n("a691"),o=Math.max,i=Math.min;t.exports=function(t,e){var n=r(t);return n<0?o(n+e,0):i(n,e)}},"23e7":function(t,e,n){var r=n("da84"),o=n("06cf").f,i=n("9112"),a=n("6eeb"),s=n("ce4e"),c=n("e893"),u=n("94ca");t.exports=function(t,e){var n,l,f,d,p,h,v=t.target,g=t.global,m=t.stat;if(l=g?r:m?r[v]||s(v,{}):(r[v]||{}).prototype,l)for(f in e){if(p=e[f],t.noTargetGet?(h=o(l,f),d=h&&h.value):d=l[f],n=u(g?f:v+(m?".":"#")+f,t.forced),!n&&void 0!==d){if(typeof p===typeof d)continue;c(p,d)}(t.sham||d&&d.sham)&&i(p,"sham",!0),a(l,f,p,t)}}},"241c":function(t,e,n){var r=n("ca84"),o=n("7839"),i=o.concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return r(t,i)}},2532:function(t,e,n){"use strict";var r=n("23e7"),o=n("5a34"),i=n("1d80"),a=n("ab13");r({target:"String",proto:!0,forced:!a("includes")},{includes:function(t){return!!~String(i(this)).indexOf(o(t),arguments.length>1?arguments[1]:void 0)}})},"25f0":function(t,e,n){"use strict";var r=n("6eeb"),o=n("825a"),i=n("d039"),a=n("ad6d"),s="toString",c=RegExp.prototype,u=c[s],l=i((function(){return"/a/b"!=u.call({source:"a",flags:"b"})})),f=u.name!=s;(l||f)&&r(RegExp.prototype,s,(function(){var t=o(this),e=String(t.source),n=t.flags,r=String(void 0===n&&t instanceof RegExp&&!("flags"in c)?a.call(t):n);return"/"+e+"/"+r}),{unsafe:!0})},2626:function(t,e,n){"use strict";var r=n("d066"),o=n("9bf2"),i=n("b622"),a=n("83ab"),s=i("species");t.exports=function(t){var e=r(t),n=o.f;a&&e&&!e[s]&&n(e,s,{configurable:!0,get:function(){return this}})}},2877:function(t,e,n){"use strict";function r(t,e,n,r,o,i,a,s){var c,u="function"===typeof t?t.options:t;if(e&&(u.render=e,u.staticRenderFns=n,u._compiled=!0),r&&(u.functional=!0),i&&(u._scopeId="data-v-"+i),a?(c=function(t){t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,t||"undefined"===typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),o&&o.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(a)},u._ssrRegister=c):o&&(c=s?function(){o.call(this,this.$root.$options.shadowRoot)}:o),c)if(u.functional){u._injectStyles=c;var l=u.render;u.render=function(t,e){return c.call(e),l(t,e)}}else{var f=u.beforeCreate;u.beforeCreate=f?[].concat(f,c):[c]}return{exports:t,options:u}}n.d(e,"a",(function(){return r}))},2909:function(t,e,n){"use strict";n.d(e,"a",(function(){return c}));var r=n("6b75");function o(t){if(Array.isArray(t))return Object(r["a"])(t)}function i(t){if("undefined"!==typeof Symbol&&Symbol.iterator in Object(t))return Array.from(t)}var a=n("06c5");function s(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function c(t){return o(t)||i(t)||Object(a["a"])(t)||s()}},"2a12":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n("78ef");e.default=function(t){return(0,r.withParams)({type:"maxLength",max:t},(function(e){return!(0,r.req)(e)||(0,r.len)(e)<=t}))}},"2ca0":function(t,e,n){"use strict";var r=n("23e7"),o=n("06cf").f,i=n("50c4"),a=n("5a34"),s=n("1d80"),c=n("ab13"),u=n("c430"),l="".startsWith,f=Math.min,d=c("startsWith"),p=!u&&!d&&!!function(){var t=o(String.prototype,"startsWith");return t&&!t.writable}();r({target:"String",proto:!0,forced:!p&&!d},{startsWith:function(t){var e=String(s(this));a(t);var n=i(f(arguments.length>1?arguments[1]:void 0,e.length)),r=String(t);return l?l.call(e,r,n):e.slice(n,n+r.length)===r}})},"2cf4":function(t,e,n){var r,o,i,a=n("da84"),s=n("d039"),c=n("c6b6"),u=n("0366"),l=n("1be4"),f=n("cc12"),d=n("1cdc"),p=a.location,h=a.setImmediate,v=a.clearImmediate,g=a.process,m=a.MessageChannel,y=a.Dispatch,b=0,w={},_="onreadystatechange",x=function(t){if(w.hasOwnProperty(t)){var e=w[t];delete w[t],e()}},S=function(t){return function(){x(t)}},O=function(t){x(t.data)},E=function(t){a.postMessage(t+"",p.protocol+"//"+p.host)};h&&v||(h=function(t){var e=[],n=1;while(arguments.length>n)e.push(arguments[n++]);return w[++b]=function(){("function"==typeof t?t:Function(t)).apply(void 0,e)},r(b),b},v=function(t){delete w[t]},"process"==c(g)?r=function(t){g.nextTick(S(t))}:y&&y.now?r=function(t){y.now(S(t))}:m&&!d?(o=new m,i=o.port2,o.port1.onmessage=O,r=u(i.postMessage,i,1)):!a.addEventListener||"function"!=typeof postMessage||a.importScripts||s(E)||"file:"===p.protocol?r=_ in f("script")?function(t){l.appendChild(f("script"))[_]=function(){l.removeChild(this),x(t)}}:function(t){setTimeout(S(t),0)}:(r=E,a.addEventListener("message",O,!1))),t.exports={set:h,clear:v}},"2d00":function(t,e,n){var r,o,i=n("da84"),a=n("342f"),s=i.process,c=s&&s.versions,u=c&&c.v8;u?(r=u.split("."),o=r[0]+r[1]):a&&(r=a.match(/Edge\/(\d+)/),(!r||r[1]>=74)&&(r=a.match(/Chrome\/(\d+)/),r&&(o=r[1]))),t.exports=o&&+o},"2f62":function(t,e,n){"use strict";(function(t){ -/** - * vuex v3.1.3 +*/(function(n,a){o=[t,e],r=a,i="function"===typeof r?r.apply(e,o):r,void 0===i||(t.exports=i)})(0,(function(t,e){"use strict";var n="function"===typeof Map?new Map:function(){var t=[],e=[];return{has:function(e){return t.indexOf(e)>-1},get:function(n){return e[t.indexOf(n)]},set:function(n,r){-1===t.indexOf(n)&&(t.push(n),e.push(r))},delete:function(n){var r=t.indexOf(n);r>-1&&(t.splice(r,1),e.splice(r,1))}}}(),r=function(t){return new Event(t,{bubbles:!0})};try{new Event("test")}catch(c){r=function(t){var e=document.createEvent("Event");return e.initEvent(t,!0,!1),e}}function o(t){if(t&&t.nodeName&&"TEXTAREA"===t.nodeName&&!n.has(t)){var e=null,o=null,i=null,a=function(){t.clientWidth!==o&&p()},s=function(e){window.removeEventListener("resize",a,!1),t.removeEventListener("input",p,!1),t.removeEventListener("keyup",p,!1),t.removeEventListener("autosize:destroy",s,!1),t.removeEventListener("autosize:update",p,!1),Object.keys(e).forEach((function(n){t.style[n]=e[n]})),n.delete(t)}.bind(t,{height:t.style.height,resize:t.style.resize,overflowY:t.style.overflowY,overflowX:t.style.overflowX,wordWrap:t.style.wordWrap});t.addEventListener("autosize:destroy",s,!1),"onpropertychange"in t&&"oninput"in t&&t.addEventListener("keyup",p,!1),window.addEventListener("resize",a,!1),t.addEventListener("input",p,!1),t.addEventListener("autosize:update",p,!1),t.style.overflowX="hidden",t.style.wordWrap="break-word",n.set(t,{destroy:s,update:p}),c()}function c(){var n=window.getComputedStyle(t,null);"vertical"===n.resize?t.style.resize="none":"both"===n.resize&&(t.style.resize="horizontal"),e="content-box"===n.boxSizing?-(parseFloat(n.paddingTop)+parseFloat(n.paddingBottom)):parseFloat(n.borderTopWidth)+parseFloat(n.borderBottomWidth),isNaN(e)&&(e=0),p()}function u(e){var n=t.style.width;t.style.width="0px",t.offsetWidth,t.style.width=n,t.style.overflowY=e}function l(t){var e=[];while(t&&t.parentNode&&t.parentNode instanceof Element)t.parentNode.scrollTop&&e.push({node:t.parentNode,scrollTop:t.parentNode.scrollTop}),t=t.parentNode;return e}function f(){if(0!==t.scrollHeight){var n=l(t),r=document.documentElement&&document.documentElement.scrollTop;t.style.height="",t.style.height=t.scrollHeight+e+"px",o=t.clientWidth,n.forEach((function(t){t.node.scrollTop=t.scrollTop})),r&&(document.documentElement.scrollTop=r)}}function p(){f();var e=Math.round(parseFloat(t.style.height)),n=window.getComputedStyle(t,null),o="content-box"===n.boxSizing?Math.round(parseFloat(n.height)):t.offsetHeight;if(o1?a:a.$sub[0]:null;return{output:i,params:s}}},computed:{run:function(){var t=this,e=this.lazyParentModel(),n=Array.isArray(e)&&e.__ob__;if(n){var r=e.__ob__.dep;r.depend();var o=r.constructor.target;if(!this._indirectWatcher){var i=o.constructor;this._indirectWatcher=new i(this,(function(){return t.runRule(e)}),null,{lazy:!0})}var a=this.getModel();if(!this._indirectWatcher.dirty&&this._lastModel===a)return this._indirectWatcher.depend(),o.value;this._lastModel=a,this._indirectWatcher.evaluate(),this._indirectWatcher.depend()}else this._indirectWatcher&&(this._indirectWatcher.teardown(),this._indirectWatcher=null);return this._indirectWatcher?this._indirectWatcher.value:this.runRule(e)},$params:function(){return this.run.params},proxy:function(){var t=this.run.output;return t[y]?!!t.v:!!t},$pending:function(){var t=this.run.output;return!!t[y]&&t.p}},destroyed:function(){this._indirectWatcher&&(this._indirectWatcher.teardown(),this._indirectWatcher=null)}}),a=e.extend({data:function(){return{dirty:!1,validations:null,lazyModel:null,model:null,prop:null,lazyParentModel:null,rootModel:null}},methods:u({},S,{refProxy:function(t){return this.getRef(t).proxy},getRef:function(t){return this.refs[t]},isNested:function(t){return"function"!==typeof this.validations[t]}}),computed:u({},w,{nestedKeys:function(){return this.keys.filter(this.isNested)},ruleKeys:function(){var t=this;return this.keys.filter((function(e){return!t.isNested(e)}))},keys:function(){return Object.keys(this.validations).filter((function(t){return"$params"!==t}))},proxy:function(){var t=this,e=d(this.keys,(function(e){return{enumerable:!0,configurable:!0,get:function(){return t.refProxy(e)}}})),n=d(O,(function(e){return{enumerable:!0,configurable:!0,get:function(){return t[e]}}})),r=d(_,(function(e){return{enumerable:!1,configurable:!0,get:function(){return t[e]}}})),o=this.hasIter()?{$iter:{enumerable:!0,value:Object.defineProperties({},u({},e))}}:{};return Object.defineProperties({},u({},e,o,{$model:{enumerable:!0,get:function(){var e=t.lazyParentModel();return null!=e?e[t.prop]:null},set:function(e){var n=t.lazyParentModel();null!=n&&(n[t.prop]=e,t.$touch())}}},n,r))},children:function(){var t=this;return i(this.nestedKeys.map((function(e){return l(t,e)}))).concat(i(this.ruleKeys.map((function(e){return f(t,e)})))).filter(Boolean)}})}),s=a.extend({methods:{isNested:function(t){return"undefined"!==typeof this.validations[t]()},getRef:function(t){var e=this;return{get proxy(){return e.validations[t]()||!1}}}}}),c=a.extend({computed:{keys:function(){var t=this.getModel();return v(t)?Object.keys(t):[]},tracker:function(){var t=this,e=this.validations.$trackBy;return e?function(n){return"".concat(g(t.rootModel,t.getModelKey(n),e))}:function(t){return"".concat(t)}},getModelLazy:function(){var t=this;return function(){return t.getModel()}},children:function(){var t=this,e=this.validations,n=this.getModel(),o=u({},e);delete o["$trackBy"];var i={};return this.keys.map((function(e){var s=t.tracker(e);return i.hasOwnProperty(s)?null:(i[s]=!0,(0,r.h)(a,s,{validations:o,prop:e,lazyParentModel:t.getModelLazy,model:n[e],rootModel:t.rootModel}))})).filter(Boolean)}},methods:{isNested:function(){return!0},getRef:function(t){return this.refs[this.tracker(t)]},hasIter:function(){return!0}}}),l=function(t,e){if("$each"===e)return(0,r.h)(c,e,{validations:t.validations[e],lazyParentModel:t.lazyParentModel,prop:e,lazyModel:t.getModel,rootModel:t.rootModel});var n=t.validations[e];if(Array.isArray(n)){var o=t.rootModel,i=d(n,(function(t){return function(){return g(o,o.$v,t)}}),(function(t){return Array.isArray(t)?t.join("."):t}));return(0,r.h)(s,e,{validations:i,lazyParentModel:p,prop:e,lazyModel:p,rootModel:o})}return(0,r.h)(a,e,{validations:n,lazyParentModel:t.getModel,prop:e,lazyModel:t.getModelKey,rootModel:t.rootModel})},f=function(t,e){return(0,r.h)(n,e,{rule:t.validations[e],lazyParentModel:t.lazyParentModel,lazyModel:t.getModel,rootModel:t.rootModel})};return k={VBase:e,Validation:a},k},M=null;function E(t){if(M)return M;var e=t.constructor;while(e.super)e=e.super;return M=e,e}var A=function(t,e){var n=E(t),o=C(n),i=o.Validation,a=o.VBase,s=new a({computed:{children:function(){var n="function"===typeof e?e.call(t):e;return[(0,r.h)(i,"$v",{validations:n,lazyParentModel:p,prop:"$v",model:t,rootModel:t})]}}});return s},T={data:function(){var t=this.$options.validations;return t&&(this._vuelidate=A(this,t)),{}},beforeCreate:function(){var t=this.$options,e=t.validations;e&&(t.computed||(t.computed={}),t.computed.$v||(t.computed.$v=function(){return this._vuelidate?this._vuelidate.refs.$v.proxy:null}))},beforeDestroy:function(){this._vuelidate&&(this._vuelidate.$destroy(),this._vuelidate=null)}};function $(t){t.mixin(T)}e.validationMixin=T;var D=$;e.default=D},"23cb":function(t,e,n){var r=n("a691"),o=Math.max,i=Math.min;t.exports=function(t,e){var n=r(t);return n<0?o(n+e,0):i(n,e)}},"23e7":function(t,e,n){var r=n("da84"),o=n("06cf").f,i=n("9112"),a=n("6eeb"),s=n("ce4e"),c=n("e893"),u=n("94ca");t.exports=function(t,e){var n,l,f,p,d,h,v=t.target,m=t.global,g=t.stat;if(l=m?r:g?r[v]||s(v,{}):(r[v]||{}).prototype,l)for(f in e){if(d=e[f],t.noTargetGet?(h=o(l,f),p=h&&h.value):p=l[f],n=u(m?f:v+(g?".":"#")+f,t.forced),!n&&void 0!==p){if(typeof d===typeof p)continue;c(d,p)}(t.sham||p&&p.sham)&&i(d,"sham",!0),a(l,f,d,t)}}},"241c":function(t,e,n){var r=n("ca84"),o=n("7839"),i=o.concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return r(t,i)}},2877:function(t,e,n){"use strict";function r(t,e,n,r,o,i,a,s){var c,u="function"===typeof t?t.options:t;if(e&&(u.render=e,u.staticRenderFns=n,u._compiled=!0),r&&(u.functional=!0),i&&(u._scopeId="data-v-"+i),a?(c=function(t){t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,t||"undefined"===typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),o&&o.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(a)},u._ssrRegister=c):o&&(c=s?function(){o.call(this,(u.functional?this.parent:this).$root.$options.shadowRoot)}:o),c)if(u.functional){u._injectStyles=c;var l=u.render;u.render=function(t,e){return c.call(e),l(t,e)}}else{var f=u.beforeCreate;u.beforeCreate=f?[].concat(f,c):[c]}return{exports:t,options:u}}n.d(e,"a",(function(){return r}))},"2a12":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var r=n("78ef"),o=function(t){return(0,r.withParams)({type:"maxLength",max:t},(function(e){return!(0,r.req)(e)||(0,r.len)(e)<=t}))};e.default=o},"2d00":function(t,e,n){var r,o,i=n("da84"),a=n("342f"),s=i.process,c=s&&s.versions,u=c&&c.v8;u?(r=u.split("."),o=r[0]+r[1]):a&&(r=a.match(/Edge\/(\d+)/),(!r||r[1]>=74)&&(r=a.match(/Chrome\/(\d+)/),r&&(o=r[1]))),t.exports=o&&+o},"2f62":function(t,e,n){"use strict";(function(t){ +/*! + * vuex v3.5.1 * (c) 2020 Evan You * @license MIT */ -function n(t){var e=Number(t.version.split(".")[0]);if(e>=2)t.mixin({beforeCreate:r});else{var n=t.prototype._init;t.prototype._init=function(t){void 0===t&&(t={}),t.init=t.init?[r].concat(t.init):r,n.call(this,t)}}function r(){var t=this.$options;t.store?this.$store="function"===typeof t.store?t.store():t.store:t.parent&&t.parent.$store&&(this.$store=t.parent.$store)}}var r="undefined"!==typeof window?window:"undefined"!==typeof t?t:{},o=r.__VUE_DEVTOOLS_GLOBAL_HOOK__;function i(t){o&&(t._devtoolHook=o,o.emit("vuex:init",t),o.on("vuex:travel-to-state",(function(e){t.replaceState(e)})),t.subscribe((function(t,e){o.emit("vuex:mutation",t,e)})))}function a(t,e){Object.keys(t).forEach((function(n){return e(t[n],n)}))}function s(t){return null!==t&&"object"===typeof t}function c(t){return t&&"function"===typeof t.then}function u(t,e){return function(){return t(e)}}var l=function(t,e){this.runtime=e,this._children=Object.create(null),this._rawModule=t;var n=t.state;this.state=("function"===typeof n?n():n)||{}},f={namespaced:{configurable:!0}};f.namespaced.get=function(){return!!this._rawModule.namespaced},l.prototype.addChild=function(t,e){this._children[t]=e},l.prototype.removeChild=function(t){delete this._children[t]},l.prototype.getChild=function(t){return this._children[t]},l.prototype.update=function(t){this._rawModule.namespaced=t.namespaced,t.actions&&(this._rawModule.actions=t.actions),t.mutations&&(this._rawModule.mutations=t.mutations),t.getters&&(this._rawModule.getters=t.getters)},l.prototype.forEachChild=function(t){a(this._children,t)},l.prototype.forEachGetter=function(t){this._rawModule.getters&&a(this._rawModule.getters,t)},l.prototype.forEachAction=function(t){this._rawModule.actions&&a(this._rawModule.actions,t)},l.prototype.forEachMutation=function(t){this._rawModule.mutations&&a(this._rawModule.mutations,t)},Object.defineProperties(l.prototype,f);var d=function(t){this.register([],t,!1)};function p(t,e,n){if(e.update(n),n.modules)for(var r in n.modules){if(!e.getChild(r))return void 0;p(t.concat(r),e.getChild(r),n.modules[r])}}d.prototype.get=function(t){return t.reduce((function(t,e){return t.getChild(e)}),this.root)},d.prototype.getNamespace=function(t){var e=this.root;return t.reduce((function(t,n){return e=e.getChild(n),t+(e.namespaced?n+"/":"")}),"")},d.prototype.update=function(t){p([],this.root,t)},d.prototype.register=function(t,e,n){var r=this;void 0===n&&(n=!0);var o=new l(e,n);if(0===t.length)this.root=o;else{var i=this.get(t.slice(0,-1));i.addChild(t[t.length-1],o)}e.modules&&a(e.modules,(function(e,o){r.register(t.concat(o),e,n)}))},d.prototype.unregister=function(t){var e=this.get(t.slice(0,-1)),n=t[t.length-1];e.getChild(n).runtime&&e.removeChild(n)};var h;var v=function(t){var e=this;void 0===t&&(t={}),!h&&"undefined"!==typeof window&&window.Vue&&k(window.Vue);var n=t.plugins;void 0===n&&(n=[]);var r=t.strict;void 0===r&&(r=!1),this._committing=!1,this._actions=Object.create(null),this._actionSubscribers=[],this._mutations=Object.create(null),this._wrappedGetters=Object.create(null),this._modules=new d(t),this._modulesNamespaceMap=Object.create(null),this._subscribers=[],this._watcherVM=new h,this._makeLocalGettersCache=Object.create(null);var o=this,a=this,s=a.dispatch,c=a.commit;this.dispatch=function(t,e){return s.call(o,t,e)},this.commit=function(t,e,n){return c.call(o,t,e,n)},this.strict=r;var u=this._modules.root.state;w(this,u,[],this._modules.root),b(this,u),n.forEach((function(t){return t(e)}));var l=void 0!==t.devtools?t.devtools:h.config.devtools;l&&i(this)},g={state:{configurable:!0}};function m(t,e){return e.indexOf(t)<0&&e.push(t),function(){var n=e.indexOf(t);n>-1&&e.splice(n,1)}}function y(t,e){t._actions=Object.create(null),t._mutations=Object.create(null),t._wrappedGetters=Object.create(null),t._modulesNamespaceMap=Object.create(null);var n=t.state;w(t,n,[],t._modules.root,!0),b(t,n,e)}function b(t,e,n){var r=t._vm;t.getters={},t._makeLocalGettersCache=Object.create(null);var o=t._wrappedGetters,i={};a(o,(function(e,n){i[n]=u(e,t),Object.defineProperty(t.getters,n,{get:function(){return t._vm[n]},enumerable:!0})}));var s=h.config.silent;h.config.silent=!0,t._vm=new h({data:{$$state:e},computed:i}),h.config.silent=s,t.strict&&C(t),r&&(n&&t._withCommit((function(){r._data.$$state=null})),h.nextTick((function(){return r.$destroy()})))}function w(t,e,n,r,o){var i=!n.length,a=t._modules.getNamespace(n);if(r.namespaced&&(t._modulesNamespaceMap[a],t._modulesNamespaceMap[a]=r),!i&&!o){var s=A(e,n.slice(0,-1)),c=n[n.length-1];t._withCommit((function(){h.set(s,c,r.state)}))}var u=r.context=_(t,a,n);r.forEachMutation((function(e,n){var r=a+n;S(t,r,e,u)})),r.forEachAction((function(e,n){var r=e.root?n:a+n,o=e.handler||e;O(t,r,o,u)})),r.forEachGetter((function(e,n){var r=a+n;E(t,r,e,u)})),r.forEachChild((function(r,i){w(t,e,n.concat(i),r,o)}))}function _(t,e,n){var r=""===e,o={dispatch:r?t.dispatch:function(n,r,o){var i=$(n,r,o),a=i.payload,s=i.options,c=i.type;return s&&s.root||(c=e+c),t.dispatch(c,a)},commit:r?t.commit:function(n,r,o){var i=$(n,r,o),a=i.payload,s=i.options,c=i.type;s&&s.root||(c=e+c),t.commit(c,a,s)}};return Object.defineProperties(o,{getters:{get:r?function(){return t.getters}:function(){return x(t,e)}},state:{get:function(){return A(t.state,n)}}}),o}function x(t,e){if(!t._makeLocalGettersCache[e]){var n={},r=e.length;Object.keys(t.getters).forEach((function(o){if(o.slice(0,r)===e){var i=o.slice(r);Object.defineProperty(n,i,{get:function(){return t.getters[o]},enumerable:!0})}})),t._makeLocalGettersCache[e]=n}return t._makeLocalGettersCache[e]}function S(t,e,n,r){var o=t._mutations[e]||(t._mutations[e]=[]);o.push((function(e){n.call(t,r.state,e)}))}function O(t,e,n,r){var o=t._actions[e]||(t._actions[e]=[]);o.push((function(e){var o=n.call(t,{dispatch:r.dispatch,commit:r.commit,getters:r.getters,state:r.state,rootGetters:t.getters,rootState:t.state},e);return c(o)||(o=Promise.resolve(o)),t._devtoolHook?o.catch((function(e){throw t._devtoolHook.emit("vuex:error",e),e})):o}))}function E(t,e,n,r){t._wrappedGetters[e]||(t._wrappedGetters[e]=function(t){return n(r.state,r.getters,t.state,t.getters)})}function C(t){t._vm.$watch((function(){return this._data.$$state}),(function(){0}),{deep:!0,sync:!0})}function A(t,e){return e.reduce((function(t,e){return t[e]}),t)}function $(t,e,n){return s(t)&&t.type&&(n=e,e=t,t=t.type),{type:t,payload:e,options:n}}function k(t){h&&t===h||(h=t,n(h))}g.state.get=function(){return this._vm._data.$$state},g.state.set=function(t){0},v.prototype.commit=function(t,e,n){var r=this,o=$(t,e,n),i=o.type,a=o.payload,s=(o.options,{type:i,payload:a}),c=this._mutations[i];c&&(this._withCommit((function(){c.forEach((function(t){t(a)}))})),this._subscribers.slice().forEach((function(t){return t(s,r.state)})))},v.prototype.dispatch=function(t,e){var n=this,r=$(t,e),o=r.type,i=r.payload,a={type:o,payload:i},s=this._actions[o];if(s){try{this._actionSubscribers.slice().filter((function(t){return t.before})).forEach((function(t){return t.before(a,n.state)}))}catch(u){0}var c=s.length>1?Promise.all(s.map((function(t){return t(i)}))):s[0](i);return c.then((function(t){try{n._actionSubscribers.filter((function(t){return t.after})).forEach((function(t){return t.after(a,n.state)}))}catch(u){0}return t}))}},v.prototype.subscribe=function(t){return m(t,this._subscribers)},v.prototype.subscribeAction=function(t){var e="function"===typeof t?{before:t}:t;return m(e,this._actionSubscribers)},v.prototype.watch=function(t,e,n){var r=this;return this._watcherVM.$watch((function(){return t(r.state,r.getters)}),e,n)},v.prototype.replaceState=function(t){var e=this;this._withCommit((function(){e._vm._data.$$state=t}))},v.prototype.registerModule=function(t,e,n){void 0===n&&(n={}),"string"===typeof t&&(t=[t]),this._modules.register(t,e),w(this,this.state,t,this._modules.get(t),n.preserveState),b(this,this.state)},v.prototype.unregisterModule=function(t){var e=this;"string"===typeof t&&(t=[t]),this._modules.unregister(t),this._withCommit((function(){var n=A(e.state,t.slice(0,-1));h.delete(n,t[t.length-1])})),y(this)},v.prototype.hotUpdate=function(t){this._modules.update(t),y(this,!0)},v.prototype._withCommit=function(t){var e=this._committing;this._committing=!0,t(),this._committing=e},Object.defineProperties(v.prototype,g);var M=N((function(t,e){var n={};return I(e).forEach((function(e){var r=e.key,o=e.val;n[r]=function(){var e=this.$store.state,n=this.$store.getters;if(t){var r=R(this.$store,"mapState",t);if(!r)return;e=r.context.state,n=r.context.getters}return"function"===typeof o?o.call(this,e,n):e[o]},n[r].vuex=!0})),n})),T=N((function(t,e){var n={};return I(e).forEach((function(e){var r=e.key,o=e.val;n[r]=function(){var e=[],n=arguments.length;while(n--)e[n]=arguments[n];var r=this.$store.commit;if(t){var i=R(this.$store,"mapMutations",t);if(!i)return;r=i.context.commit}return"function"===typeof o?o.apply(this,[r].concat(e)):r.apply(this.$store,[o].concat(e))}})),n})),j=N((function(t,e){var n={};return I(e).forEach((function(e){var r=e.key,o=e.val;o=t+o,n[r]=function(){if(!t||R(this.$store,"mapGetters",t))return this.$store.getters[o]},n[r].vuex=!0})),n})),P=N((function(t,e){var n={};return I(e).forEach((function(e){var r=e.key,o=e.val;n[r]=function(){var e=[],n=arguments.length;while(n--)e[n]=arguments[n];var r=this.$store.dispatch;if(t){var i=R(this.$store,"mapActions",t);if(!i)return;r=i.context.dispatch}return"function"===typeof o?o.apply(this,[r].concat(e)):r.apply(this.$store,[o].concat(e))}})),n})),D=function(t){return{mapState:M.bind(null,t),mapGetters:j.bind(null,t),mapMutations:T.bind(null,t),mapActions:P.bind(null,t)}};function I(t){return L(t)?Array.isArray(t)?t.map((function(t){return{key:t,val:t}})):Object.keys(t).map((function(e){return{key:e,val:t[e]}})):[]}function L(t){return Array.isArray(t)||s(t)}function N(t){return function(e,n){return"string"!==typeof e?(n=e,e=""):"/"!==e.charAt(e.length-1)&&(e+="/"),t(e,n)}}function R(t,e,n){var r=t._modulesNamespaceMap[n];return r}var F={Store:v,install:k,version:"3.1.3",mapState:M,mapMutations:T,mapGetters:j,mapActions:P,createNamespacedHelpers:D};e["a"]=F}).call(this,n("c8ba"))},"310e":function(t,e,n){t.exports=function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"===typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t["default"]}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s="fb15")}({"02f4":function(t,e,n){var r=n("4588"),o=n("be13");t.exports=function(t){return function(e,n){var i,a,s=String(o(e)),c=r(n),u=s.length;return c<0||c>=u?t?"":void 0:(i=s.charCodeAt(c),i<55296||i>56319||c+1===u||(a=s.charCodeAt(c+1))<56320||a>57343?t?s.charAt(c):i:t?s.slice(c,c+2):a-56320+(i-55296<<10)+65536)}}},"0390":function(t,e,n){"use strict";var r=n("02f4")(!0);t.exports=function(t,e,n){return e+(n?r(t,e).length:1)}},"07e3":function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},"0bfb":function(t,e,n){"use strict";var r=n("cb7c");t.exports=function(){var t=r(this),e="";return t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.unicode&&(e+="u"),t.sticky&&(e+="y"),e}},"0fc9":function(t,e,n){var r=n("3a38"),o=Math.max,i=Math.min;t.exports=function(t,e){return t=r(t),t<0?o(t+e,0):i(t,e)}},1654:function(t,e,n){"use strict";var r=n("71c1")(!0);n("30f1")(String,"String",(function(t){this._t=String(t),this._i=0}),(function(){var t,e=this._t,n=this._i;return n>=e.length?{value:void 0,done:!0}:(t=r(e,n),this._i+=t.length,{value:t,done:!1})}))},1691:function(t,e){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},"1af6":function(t,e,n){var r=n("63b6");r(r.S,"Array",{isArray:n("9003")})},"1bc3":function(t,e,n){var r=n("f772");t.exports=function(t,e){if(!r(t))return t;var n,o;if(e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;if("function"==typeof(n=t.valueOf)&&!r(o=n.call(t)))return o;if(!e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;throw TypeError("Can't convert object to primitive value")}},"1ec9":function(t,e,n){var r=n("f772"),o=n("e53d").document,i=r(o)&&r(o.createElement);t.exports=function(t){return i?o.createElement(t):{}}},"20fd":function(t,e,n){"use strict";var r=n("d9f6"),o=n("aebd");t.exports=function(t,e,n){e in t?r.f(t,e,o(0,n)):t[e]=n}},"214f":function(t,e,n){"use strict";n("b0c5");var r=n("2aba"),o=n("32e9"),i=n("79e5"),a=n("be13"),s=n("2b4c"),c=n("520a"),u=s("species"),l=!i((function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:"7"},t},"7"!=="".replace(t,"$")})),f=function(){var t=/(?:)/,e=t.exec;t.exec=function(){return e.apply(this,arguments)};var n="ab".split(t);return 2===n.length&&"a"===n[0]&&"b"===n[1]}();t.exports=function(t,e,n){var d=s(t),p=!i((function(){var e={};return e[d]=function(){return 7},7!=""[t](e)})),h=p?!i((function(){var e=!1,n=/a/;return n.exec=function(){return e=!0,null},"split"===t&&(n.constructor={},n.constructor[u]=function(){return n}),n[d](""),!e})):void 0;if(!p||!h||"replace"===t&&!l||"split"===t&&!f){var v=/./[d],g=n(a,d,""[t],(function(t,e,n,r,o){return e.exec===c?p&&!o?{done:!0,value:v.call(e,n,r)}:{done:!0,value:t.call(n,e,r)}:{done:!1}})),m=g[0],y=g[1];r(String.prototype,t,m),o(RegExp.prototype,d,2==e?function(t,e){return y.call(t,this,e)}:function(t){return y.call(t,this)})}}},"230e":function(t,e,n){var r=n("d3f4"),o=n("7726").document,i=r(o)&&r(o.createElement);t.exports=function(t){return i?o.createElement(t):{}}},"23c6":function(t,e,n){var r=n("2d95"),o=n("2b4c")("toStringTag"),i="Arguments"==r(function(){return arguments}()),a=function(t,e){try{return t[e]}catch(n){}};t.exports=function(t){var e,n,s;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=a(e=Object(t),o))?n:i?r(e):"Object"==(s=r(e))&&"function"==typeof e.callee?"Arguments":s}},"241e":function(t,e,n){var r=n("25eb");t.exports=function(t){return Object(r(t))}},"25eb":function(t,e){t.exports=function(t){if(void 0==t)throw TypeError("Can't call method on "+t);return t}},"294c":function(t,e){t.exports=function(t){try{return!!t()}catch(e){return!0}}},"2aba":function(t,e,n){var r=n("7726"),o=n("32e9"),i=n("69a8"),a=n("ca5a")("src"),s=n("fa5b"),c="toString",u=(""+s).split(c);n("8378").inspectSource=function(t){return s.call(t)},(t.exports=function(t,e,n,s){var c="function"==typeof n;c&&(i(n,"name")||o(n,"name",e)),t[e]!==n&&(c&&(i(n,a)||o(n,a,t[e]?""+t[e]:u.join(String(e)))),t===r?t[e]=n:s?t[e]?t[e]=n:o(t,e,n):(delete t[e],o(t,e,n)))})(Function.prototype,c,(function(){return"function"==typeof this&&this[a]||s.call(this)}))},"2b4c":function(t,e,n){var r=n("5537")("wks"),o=n("ca5a"),i=n("7726").Symbol,a="function"==typeof i,s=t.exports=function(t){return r[t]||(r[t]=a&&i[t]||(a?i:o)("Symbol."+t))};s.store=r},"2d00":function(t,e){t.exports=!1},"2d95":function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},"2fdb":function(t,e,n){"use strict";var r=n("5ca1"),o=n("d2c8"),i="includes";r(r.P+r.F*n("5147")(i),"String",{includes:function(t){return!!~o(this,t,i).indexOf(t,arguments.length>1?arguments[1]:void 0)}})},"30f1":function(t,e,n){"use strict";var r=n("b8e3"),o=n("63b6"),i=n("9138"),a=n("35e8"),s=n("481b"),c=n("8f60"),u=n("45f2"),l=n("53e2"),f=n("5168")("iterator"),d=!([].keys&&"next"in[].keys()),p="@@iterator",h="keys",v="values",g=function(){return this};t.exports=function(t,e,n,m,y,b,w){c(n,e,m);var _,x,S,O=function(t){if(!d&&t in $)return $[t];switch(t){case h:return function(){return new n(this,t)};case v:return function(){return new n(this,t)}}return function(){return new n(this,t)}},E=e+" Iterator",C=y==v,A=!1,$=t.prototype,k=$[f]||$[p]||y&&$[y],M=k||O(y),T=y?C?O("entries"):M:void 0,j="Array"==e&&$.entries||k;if(j&&(S=l(j.call(new t)),S!==Object.prototype&&S.next&&(u(S,E,!0),r||"function"==typeof S[f]||a(S,f,g))),C&&k&&k.name!==v&&(A=!0,M=function(){return k.call(this)}),r&&!w||!d&&!A&&$[f]||a($,f,M),s[e]=M,s[E]=g,y)if(_={values:C?M:O(v),keys:b?M:O(h),entries:T},w)for(x in _)x in $||i($,x,_[x]);else o(o.P+o.F*(d||A),e,_);return _}},"32a6":function(t,e,n){var r=n("241e"),o=n("c3a1");n("ce7e")("keys",(function(){return function(t){return o(r(t))}}))},"32e9":function(t,e,n){var r=n("86cc"),o=n("4630");t.exports=n("9e1e")?function(t,e,n){return r.f(t,e,o(1,n))}:function(t,e,n){return t[e]=n,t}},"32fc":function(t,e,n){var r=n("e53d").document;t.exports=r&&r.documentElement},"335c":function(t,e,n){var r=n("6b4c");t.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==r(t)?t.split(""):Object(t)}},"355d":function(t,e){e.f={}.propertyIsEnumerable},"35e8":function(t,e,n){var r=n("d9f6"),o=n("aebd");t.exports=n("8e60")?function(t,e,n){return r.f(t,e,o(1,n))}:function(t,e,n){return t[e]=n,t}},"36c3":function(t,e,n){var r=n("335c"),o=n("25eb");t.exports=function(t){return r(o(t))}},3702:function(t,e,n){var r=n("481b"),o=n("5168")("iterator"),i=Array.prototype;t.exports=function(t){return void 0!==t&&(r.Array===t||i[o]===t)}},"3a38":function(t,e){var n=Math.ceil,r=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?r:n)(t)}},"40c3":function(t,e,n){var r=n("6b4c"),o=n("5168")("toStringTag"),i="Arguments"==r(function(){return arguments}()),a=function(t,e){try{return t[e]}catch(n){}};t.exports=function(t){var e,n,s;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=a(e=Object(t),o))?n:i?r(e):"Object"==(s=r(e))&&"function"==typeof e.callee?"Arguments":s}},4588:function(t,e){var n=Math.ceil,r=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?r:n)(t)}},"45f2":function(t,e,n){var r=n("d9f6").f,o=n("07e3"),i=n("5168")("toStringTag");t.exports=function(t,e,n){t&&!o(t=n?t:t.prototype,i)&&r(t,i,{configurable:!0,value:e})}},4630:function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},"469f":function(t,e,n){n("6c1c"),n("1654"),t.exports=n("7d7b")},"481b":function(t,e){t.exports={}},"4aa6":function(t,e,n){t.exports=n("dc62")},"4bf8":function(t,e,n){var r=n("be13");t.exports=function(t){return Object(r(t))}},"4ee1":function(t,e,n){var r=n("5168")("iterator"),o=!1;try{var i=[7][r]();i["return"]=function(){o=!0},Array.from(i,(function(){throw 2}))}catch(a){}t.exports=function(t,e){if(!e&&!o)return!1;var n=!1;try{var i=[7],s=i[r]();s.next=function(){return{done:n=!0}},i[r]=function(){return s},t(i)}catch(a){}return n}},"50ed":function(t,e){t.exports=function(t,e){return{value:e,done:!!t}}},5147:function(t,e,n){var r=n("2b4c")("match");t.exports=function(t){var e=/./;try{"/./"[t](e)}catch(n){try{return e[r]=!1,!"/./"[t](e)}catch(o){}}return!0}},5168:function(t,e,n){var r=n("dbdb")("wks"),o=n("62a0"),i=n("e53d").Symbol,a="function"==typeof i,s=t.exports=function(t){return r[t]||(r[t]=a&&i[t]||(a?i:o)("Symbol."+t))};s.store=r},5176:function(t,e,n){t.exports=n("51b6")},"51b6":function(t,e,n){n("a3c3"),t.exports=n("584a").Object.assign},"520a":function(t,e,n){"use strict";var r=n("0bfb"),o=RegExp.prototype.exec,i=String.prototype.replace,a=o,s="lastIndex",c=function(){var t=/a/,e=/b*/g;return o.call(t,"a"),o.call(e,"a"),0!==t[s]||0!==e[s]}(),u=void 0!==/()??/.exec("")[1],l=c||u;l&&(a=function(t){var e,n,a,l,f=this;return u&&(n=new RegExp("^"+f.source+"$(?!\\s)",r.call(f))),c&&(e=f[s]),a=o.call(f,t),c&&a&&(f[s]=f.global?a.index+a[0].length:e),u&&a&&a.length>1&&i.call(a[0],n,(function(){for(l=1;l1?arguments[1]:void 0,g=void 0!==v,m=0,y=l(d);if(g&&(v=r(v,h>2?arguments[2]:void 0,2)),void 0==y||p==Array&&s(y))for(e=c(d.length),n=new p(e);e>m;m++)u(n,m,g?v(d[m],m):d[m]);else for(f=y.call(d),n=new p;!(o=f.next()).done;m++)u(n,m,g?a(f,v,[o.value,m],!0):o.value);return n.length=m,n}})},"54a1":function(t,e,n){n("6c1c"),n("1654"),t.exports=n("95d5")},5537:function(t,e,n){var r=n("8378"),o=n("7726"),i="__core-js_shared__",a=o[i]||(o[i]={});(t.exports=function(t,e){return a[t]||(a[t]=void 0!==e?e:{})})("versions",[]).push({version:r.version,mode:n("2d00")?"pure":"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})},5559:function(t,e,n){var r=n("dbdb")("keys"),o=n("62a0");t.exports=function(t){return r[t]||(r[t]=o(t))}},"584a":function(t,e){var n=t.exports={version:"2.6.5"};"number"==typeof __e&&(__e=n)},"5b4e":function(t,e,n){var r=n("36c3"),o=n("b447"),i=n("0fc9");t.exports=function(t){return function(e,n,a){var s,c=r(e),u=o(c.length),l=i(a,u);if(t&&n!=n){while(u>l)if(s=c[l++],s!=s)return!0}else for(;u>l;l++)if((t||l in c)&&c[l]===n)return t||l||0;return!t&&-1}}},"5ca1":function(t,e,n){var r=n("7726"),o=n("8378"),i=n("32e9"),a=n("2aba"),s=n("9b43"),c="prototype",u=function(t,e,n){var l,f,d,p,h=t&u.F,v=t&u.G,g=t&u.S,m=t&u.P,y=t&u.B,b=v?r:g?r[e]||(r[e]={}):(r[e]||{})[c],w=v?o:o[e]||(o[e]={}),_=w[c]||(w[c]={});for(l in v&&(n=e),n)f=!h&&b&&void 0!==b[l],d=(f?b:n)[l],p=y&&f?s(d,r):m&&"function"==typeof d?s(Function.call,d):d,b&&a(b,l,d,t&u.U),w[l]!=d&&i(w,l,p),m&&_[l]!=d&&(_[l]=d)};r.core=o,u.F=1,u.G=2,u.S=4,u.P=8,u.B=16,u.W=32,u.U=64,u.R=128,t.exports=u},"5d73":function(t,e,n){t.exports=n("469f")},"5f1b":function(t,e,n){"use strict";var r=n("23c6"),o=RegExp.prototype.exec;t.exports=function(t,e){var n=t.exec;if("function"===typeof n){var i=n.call(t,e);if("object"!==typeof i)throw new TypeError("RegExp exec method returned something other than an Object or null");return i}if("RegExp"!==r(t))throw new TypeError("RegExp#exec called on incompatible receiver");return o.call(t,e)}},"626a":function(t,e,n){var r=n("2d95");t.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==r(t)?t.split(""):Object(t)}},"62a0":function(t,e){var n=0,r=Math.random();t.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++n+r).toString(36))}},"63b6":function(t,e,n){var r=n("e53d"),o=n("584a"),i=n("d864"),a=n("35e8"),s=n("07e3"),c="prototype",u=function(t,e,n){var l,f,d,p=t&u.F,h=t&u.G,v=t&u.S,g=t&u.P,m=t&u.B,y=t&u.W,b=h?o:o[e]||(o[e]={}),w=b[c],_=h?r:v?r[e]:(r[e]||{})[c];for(l in h&&(n=e),n)f=!p&&_&&void 0!==_[l],f&&s(b,l)||(d=f?_[l]:n[l],b[l]=h&&"function"!=typeof _[l]?n[l]:m&&f?i(d,r):y&&_[l]==d?function(t){var e=function(e,n,r){if(this instanceof t){switch(arguments.length){case 0:return new t;case 1:return new t(e);case 2:return new t(e,n)}return new t(e,n,r)}return t.apply(this,arguments)};return e[c]=t[c],e}(d):g&&"function"==typeof d?i(Function.call,d):d,g&&((b.virtual||(b.virtual={}))[l]=d,t&u.R&&w&&!w[l]&&a(w,l,d)))};u.F=1,u.G=2,u.S=4,u.P=8,u.B=16,u.W=32,u.U=64,u.R=128,t.exports=u},6762:function(t,e,n){"use strict";var r=n("5ca1"),o=n("c366")(!0);r(r.P,"Array",{includes:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}}),n("9c6c")("includes")},6821:function(t,e,n){var r=n("626a"),o=n("be13");t.exports=function(t){return r(o(t))}},"69a8":function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},"6a99":function(t,e,n){var r=n("d3f4");t.exports=function(t,e){if(!r(t))return t;var n,o;if(e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;if("function"==typeof(n=t.valueOf)&&!r(o=n.call(t)))return o;if(!e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;throw TypeError("Can't convert object to primitive value")}},"6b4c":function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},"6c1c":function(t,e,n){n("c367");for(var r=n("e53d"),o=n("35e8"),i=n("481b"),a=n("5168")("toStringTag"),s="CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList".split(","),c=0;c=u?t?"":void 0:(i=s.charCodeAt(c),i<55296||i>56319||c+1===u||(a=s.charCodeAt(c+1))<56320||a>57343?t?s.charAt(c):i:t?s.slice(c,c+2):a-56320+(i-55296<<10)+65536)}}},7726:function(t,e){var n=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},"774e":function(t,e,n){t.exports=n("d2d5")},"77f1":function(t,e,n){var r=n("4588"),o=Math.max,i=Math.min;t.exports=function(t,e){return t=r(t),t<0?o(t+e,0):i(t,e)}},"794b":function(t,e,n){t.exports=!n("8e60")&&!n("294c")((function(){return 7!=Object.defineProperty(n("1ec9")("div"),"a",{get:function(){return 7}}).a}))},"79aa":function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},"79e5":function(t,e){t.exports=function(t){try{return!!t()}catch(e){return!0}}},"7cd6":function(t,e,n){var r=n("40c3"),o=n("5168")("iterator"),i=n("481b");t.exports=n("584a").getIteratorMethod=function(t){if(void 0!=t)return t[o]||t["@@iterator"]||i[r(t)]}},"7d7b":function(t,e,n){var r=n("e4ae"),o=n("7cd6");t.exports=n("584a").getIterator=function(t){var e=o(t);if("function"!=typeof e)throw TypeError(t+" is not iterable!");return r(e.call(t))}},"7e90":function(t,e,n){var r=n("d9f6"),o=n("e4ae"),i=n("c3a1");t.exports=n("8e60")?Object.defineProperties:function(t,e){o(t);var n,a=i(e),s=a.length,c=0;while(s>c)r.f(t,n=a[c++],e[n]);return t}},8378:function(t,e){var n=t.exports={version:"2.6.5"};"number"==typeof __e&&(__e=n)},8436:function(t,e){t.exports=function(){}},"86cc":function(t,e,n){var r=n("cb7c"),o=n("c69a"),i=n("6a99"),a=Object.defineProperty;e.f=n("9e1e")?Object.defineProperty:function(t,e,n){if(r(t),e=i(e,!0),r(n),o)try{return a(t,e,n)}catch(s){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(t[e]=n.value),t}},"8aae":function(t,e,n){n("32a6"),t.exports=n("584a").Object.keys},"8e60":function(t,e,n){t.exports=!n("294c")((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},"8f60":function(t,e,n){"use strict";var r=n("a159"),o=n("aebd"),i=n("45f2"),a={};n("35e8")(a,n("5168")("iterator"),(function(){return this})),t.exports=function(t,e,n){t.prototype=r(a,{next:o(1,n)}),i(t,e+" Iterator")}},9003:function(t,e,n){var r=n("6b4c");t.exports=Array.isArray||function(t){return"Array"==r(t)}},9138:function(t,e,n){t.exports=n("35e8")},9306:function(t,e,n){"use strict";var r=n("c3a1"),o=n("9aa9"),i=n("355d"),a=n("241e"),s=n("335c"),c=Object.assign;t.exports=!c||n("294c")((function(){var t={},e={},n=Symbol(),r="abcdefghijklmnopqrst";return t[n]=7,r.split("").forEach((function(t){e[t]=t})),7!=c({},t)[n]||Object.keys(c({},e)).join("")!=r}))?function(t,e){var n=a(t),c=arguments.length,u=1,l=o.f,f=i.f;while(c>u){var d,p=s(arguments[u++]),h=l?r(p).concat(l(p)):r(p),v=h.length,g=0;while(v>g)f.call(p,d=h[g++])&&(n[d]=p[d])}return n}:c},9427:function(t,e,n){var r=n("63b6");r(r.S,"Object",{create:n("a159")})},"95d5":function(t,e,n){var r=n("40c3"),o=n("5168")("iterator"),i=n("481b");t.exports=n("584a").isIterable=function(t){var e=Object(t);return void 0!==e[o]||"@@iterator"in e||i.hasOwnProperty(r(e))}},"9aa9":function(t,e){e.f=Object.getOwnPropertySymbols},"9b43":function(t,e,n){var r=n("d8e8");t.exports=function(t,e,n){if(r(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,r){return t.call(e,n,r)};case 3:return function(n,r,o){return t.call(e,n,r,o)}}return function(){return t.apply(e,arguments)}}},"9c6c":function(t,e,n){var r=n("2b4c")("unscopables"),o=Array.prototype;void 0==o[r]&&n("32e9")(o,r,{}),t.exports=function(t){o[r][t]=!0}},"9def":function(t,e,n){var r=n("4588"),o=Math.min;t.exports=function(t){return t>0?o(r(t),9007199254740991):0}},"9e1e":function(t,e,n){t.exports=!n("79e5")((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},a159:function(t,e,n){var r=n("e4ae"),o=n("7e90"),i=n("1691"),a=n("5559")("IE_PROTO"),s=function(){},c="prototype",u=function(){var t,e=n("1ec9")("iframe"),r=i.length,o="<",a=">";e.style.display="none",n("32fc").appendChild(e),e.src="javascript:",t=e.contentWindow.document,t.open(),t.write(o+"script"+a+"document.F=Object"+o+"/script"+a),t.close(),u=t.F;while(r--)delete u[c][i[r]];return u()};t.exports=Object.create||function(t,e){var n;return null!==t?(s[c]=r(t),n=new s,s[c]=null,n[a]=t):n=u(),void 0===e?n:o(n,e)}},a352:function(t,e){t.exports=n("aa47")},a3c3:function(t,e,n){var r=n("63b6");r(r.S+r.F,"Object",{assign:n("9306")})},a481:function(t,e,n){"use strict";var r=n("cb7c"),o=n("4bf8"),i=n("9def"),a=n("4588"),s=n("0390"),c=n("5f1b"),u=Math.max,l=Math.min,f=Math.floor,d=/\$([$&`']|\d\d?|<[^>]*>)/g,p=/\$([$&`']|\d\d?)/g,h=function(t){return void 0===t?t:String(t)};n("214f")("replace",2,(function(t,e,n,v){return[function(r,o){var i=t(this),a=void 0==r?void 0:r[e];return void 0!==a?a.call(r,i,o):n.call(String(i),r,o)},function(t,e){var o=v(n,t,this,e);if(o.done)return o.value;var f=r(t),d=String(this),p="function"===typeof e;p||(e=String(e));var m=f.global;if(m){var y=f.unicode;f.lastIndex=0}var b=[];while(1){var w=c(f,d);if(null===w)break;if(b.push(w),!m)break;var _=String(w[0]);""===_&&(f.lastIndex=s(d,i(f.lastIndex),y))}for(var x="",S=0,O=0;O=S&&(x+=d.slice(S,C)+T,S=C+E.length)}return x+d.slice(S)}];function g(t,e,r,i,a,s){var c=r+t.length,u=i.length,l=p;return void 0!==a&&(a=o(a),l=d),n.call(s,l,(function(n,o){var s;switch(o.charAt(0)){case"$":return"$";case"&":return t;case"`":return e.slice(0,r);case"'":return e.slice(c);case"<":s=a[o.slice(1,-1)];break;default:var l=+o;if(0===l)return n;if(l>u){var d=f(l/10);return 0===d?n:d<=u?void 0===i[d-1]?o.charAt(1):i[d-1]+o.charAt(1):n}s=i[l-1]}return void 0===s?"":s}))}}))},a4bb:function(t,e,n){t.exports=n("8aae")},a745:function(t,e,n){t.exports=n("f410")},aae3:function(t,e,n){var r=n("d3f4"),o=n("2d95"),i=n("2b4c")("match");t.exports=function(t){var e;return r(t)&&(void 0!==(e=t[i])?!!e:"RegExp"==o(t))}},aebd:function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},b0c5:function(t,e,n){"use strict";var r=n("520a");n("5ca1")({target:"RegExp",proto:!0,forced:r!==/./.exec},{exec:r})},b0dc:function(t,e,n){var r=n("e4ae");t.exports=function(t,e,n,o){try{return o?e(r(n)[0],n[1]):e(n)}catch(a){var i=t["return"];throw void 0!==i&&r(i.call(t)),a}}},b447:function(t,e,n){var r=n("3a38"),o=Math.min;t.exports=function(t){return t>0?o(r(t),9007199254740991):0}},b8e3:function(t,e){t.exports=!0},be13:function(t,e){t.exports=function(t){if(void 0==t)throw TypeError("Can't call method on "+t);return t}},c366:function(t,e,n){var r=n("6821"),o=n("9def"),i=n("77f1");t.exports=function(t){return function(e,n,a){var s,c=r(e),u=o(c.length),l=i(a,u);if(t&&n!=n){while(u>l)if(s=c[l++],s!=s)return!0}else for(;u>l;l++)if((t||l in c)&&c[l]===n)return t||l||0;return!t&&-1}}},c367:function(t,e,n){"use strict";var r=n("8436"),o=n("50ed"),i=n("481b"),a=n("36c3");t.exports=n("30f1")(Array,"Array",(function(t,e){this._t=a(t),this._i=0,this._k=e}),(function(){var t=this._t,e=this._k,n=this._i++;return!t||n>=t.length?(this._t=void 0,o(1)):o(0,"keys"==e?n:"values"==e?t[n]:[n,t[n]])}),"values"),i.Arguments=i.Array,r("keys"),r("values"),r("entries")},c3a1:function(t,e,n){var r=n("e6f3"),o=n("1691");t.exports=Object.keys||function(t){return r(t,o)}},c649:function(t,e,n){"use strict";(function(t){n.d(e,"c",(function(){return f})),n.d(e,"a",(function(){return u})),n.d(e,"b",(function(){return a})),n.d(e,"d",(function(){return l}));n("a481");var r=n("4aa6"),o=n.n(r);function i(){return"undefined"!==typeof window?window.console:t.console}var a=i();function s(t){var e=o()(null);return function(n){var r=e[n];return r||(e[n]=t(n))}}var c=/-(\w)/g,u=s((function(t){return t.replace(c,(function(t,e){return e?e.toUpperCase():""}))}));function l(t){null!==t.parentElement&&t.parentElement.removeChild(t)}function f(t,e,n){var r=0===n?t.children[0]:t.children[n-1].nextSibling;t.insertBefore(e,r)}}).call(this,n("c8ba"))},c69a:function(t,e,n){t.exports=!n("9e1e")&&!n("79e5")((function(){return 7!=Object.defineProperty(n("230e")("div"),"a",{get:function(){return 7}}).a}))},c8ba:function(t,e){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(r){"object"===typeof window&&(n=window)}t.exports=n},c8bb:function(t,e,n){t.exports=n("54a1")},ca5a:function(t,e){var n=0,r=Math.random();t.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++n+r).toString(36))}},cb7c:function(t,e,n){var r=n("d3f4");t.exports=function(t){if(!r(t))throw TypeError(t+" is not an object!");return t}},ce7e:function(t,e,n){var r=n("63b6"),o=n("584a"),i=n("294c");t.exports=function(t,e){var n=(o.Object||{})[t]||Object[t],a={};a[t]=e(n),r(r.S+r.F*i((function(){n(1)})),"Object",a)}},d2c8:function(t,e,n){var r=n("aae3"),o=n("be13");t.exports=function(t,e,n){if(r(e))throw TypeError("String#"+n+" doesn't accept regex!");return String(o(t))}},d2d5:function(t,e,n){n("1654"),n("549b"),t.exports=n("584a").Array.from},d3f4:function(t,e){t.exports=function(t){return"object"===typeof t?null!==t:"function"===typeof t}},d864:function(t,e,n){var r=n("79aa");t.exports=function(t,e,n){if(r(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,r){return t.call(e,n,r)};case 3:return function(n,r,o){return t.call(e,n,r,o)}}return function(){return t.apply(e,arguments)}}},d8e8:function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},d9f6:function(t,e,n){var r=n("e4ae"),o=n("794b"),i=n("1bc3"),a=Object.defineProperty;e.f=n("8e60")?Object.defineProperty:function(t,e,n){if(r(t),e=i(e,!0),r(n),o)try{return a(t,e,n)}catch(s){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(t[e]=n.value),t}},dbdb:function(t,e,n){var r=n("584a"),o=n("e53d"),i="__core-js_shared__",a=o[i]||(o[i]={});(t.exports=function(t,e){return a[t]||(a[t]=void 0!==e?e:{})})("versions",[]).push({version:r.version,mode:n("b8e3")?"pure":"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})},dc62:function(t,e,n){n("9427");var r=n("584a").Object;t.exports=function(t,e){return r.create(t,e)}},e4ae:function(t,e,n){var r=n("f772");t.exports=function(t){if(!r(t))throw TypeError(t+" is not an object!");return t}},e53d:function(t,e){var n=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},e6f3:function(t,e,n){var r=n("07e3"),o=n("36c3"),i=n("5b4e")(!1),a=n("5559")("IE_PROTO");t.exports=function(t,e){var n,s=o(t),c=0,u=[];for(n in s)n!=a&&r(s,n)&&u.push(n);while(e.length>c)r(s,n=e[c++])&&(~i(u,n)||u.push(n));return u}},f410:function(t,e,n){n("1af6"),t.exports=n("584a").Array.isArray},f559:function(t,e,n){"use strict";var r=n("5ca1"),o=n("9def"),i=n("d2c8"),a="startsWith",s=""[a];r(r.P+r.F*n("5147")(a),"String",{startsWith:function(t){var e=i(this,t,a),n=o(Math.min(arguments.length>1?arguments[1]:void 0,e.length)),r=String(t);return s?s.call(e,r,n):e.slice(n,n+r.length)===r}})},f772:function(t,e){t.exports=function(t){return"object"===typeof t?null!==t:"function"===typeof t}},fa5b:function(t,e,n){t.exports=n("5537")("native-function-to-string",Function.toString)},fb15:function(t,e,n){"use strict";var r;(n.r(e),"undefined"!==typeof window)&&((r=window.document.currentScript)&&(r=r.src.match(/(.+\/)[^/]+\.js(\?.*)?$/))&&(n.p=r[1]));var o=n("5176"),i=n.n(o),a=(n("f559"),n("a4bb")),s=n.n(a),c=n("a745"),u=n.n(c);function l(t){if(u()(t))return t}var f=n("5d73"),d=n.n(f);function p(t,e){var n=[],r=!0,o=!1,i=void 0;try{for(var a,s=d()(t);!(r=(a=s.next()).done);r=!0)if(n.push(a.value),e&&n.length===e)break}catch(c){o=!0,i=c}finally{try{r||null==s["return"]||s["return"]()}finally{if(o)throw i}}return n}function h(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}function v(t,e){return l(t)||p(t,e)||h()}n("6762"),n("2fdb");function g(t){if(u()(t)){for(var e=0,n=new Array(t.length);e=i?o.length:o.indexOf(t)}));return n?a.filter((function(t){return-1!==t})):a}function M(t,e){var n=this;this.$nextTick((function(){return n.$emit(t.toLowerCase(),e)}))}function T(t){var e=this;return function(n){null!==e.realList&&e["onDrag"+t](n),M.call(e,t,n)}}function j(t){return["transition-group","TransitionGroup"].includes(t)}function P(t){if(!t||1!==t.length)return!1;var e=v(t,1),n=e[0].componentOptions;return!!n&&j(n.tag)}function D(t,e,n){return t[n]||(e[n]?e[n]():void 0)}function I(t,e,n){var r=0,o=0,i=D(e,n,"header");i&&(r=i.length,t=t?[].concat(S(i),S(t)):S(i));var a=D(e,n,"footer");return a&&(o=a.length,t=t?[].concat(S(t),S(a)):S(a)),{children:t,headerOffset:r,footerOffset:o}}function L(t,e){var n=null,r=function(t,e){n=A(n,t,e)},o=s()(t).filter((function(t){return"id"===t||t.startsWith("data-")})).reduce((function(e,n){return e[n]=t[n],e}),{});if(r("attrs",o),!e)return n;var a=e.on,c=e.props,u=e.attrs;return r("on",a),r("props",c),i()(n.attrs,u),n}var N=["Start","Add","Remove","Update","End"],R=["Choose","Unchoose","Sort","Filter","Clone"],F=["Move"].concat(N,R).map((function(t){return"on"+t})),z=null,U={options:Object,list:{type:Array,required:!1,default:null},value:{type:Array,required:!1,default:null},noTransitionOnDrag:{type:Boolean,default:!1},clone:{type:Function,default:function(t){return t}},element:{type:String,default:"div"},tag:{type:String,default:null},move:{type:Function,default:null},componentData:{type:Object,required:!1,default:null}},H={name:"draggable",inheritAttrs:!1,props:U,data:function(){return{transitionMode:!1,noneFunctionalComponentMode:!1}},render:function(t){var e=this.$slots.default;this.transitionMode=P(e);var n=I(e,this.$slots,this.$scopedSlots),r=n.children,o=n.headerOffset,i=n.footerOffset;this.headerOffset=o,this.footerOffset=i;var a=L(this.$attrs,this.componentData);return t(this.getTag(),a,r)},created:function(){null!==this.list&&null!==this.value&&C["b"].error("Value and list props are mutually exclusive! Please set one or another."),"div"!==this.element&&C["b"].warn("Element props is deprecated please use tag props instead. See https://github.com/SortableJS/Vue.Draggable/blob/master/documentation/migrate.md#element-props"),void 0!==this.options&&C["b"].warn("Options props is deprecated, add sortable options directly as vue.draggable item, or use v-bind. See https://github.com/SortableJS/Vue.Draggable/blob/master/documentation/migrate.md#options-props")},mounted:function(){var t=this;if(this.noneFunctionalComponentMode=this.getTag().toLowerCase()!==this.$el.nodeName.toLowerCase()&&!this.getIsFunctional(),this.noneFunctionalComponentMode&&this.transitionMode)throw new Error("Transition-group inside component is not supported. Please alter tag value or remove transition-group. Current tag value: ".concat(this.getTag()));var e={};N.forEach((function(n){e["on"+n]=T.call(t,n)})),R.forEach((function(n){e["on"+n]=M.bind(t,n)}));var n=s()(this.$attrs).reduce((function(e,n){return e[Object(C["a"])(n)]=t.$attrs[n],e}),{}),r=i()({},this.options,n,e,{onMove:function(e,n){return t.onDragMove(e,n)}});!("draggable"in r)&&(r.draggable=">*"),this._sortable=new E.a(this.rootContainer,r),this.computeIndexes()},beforeDestroy:function(){void 0!==this._sortable&&this._sortable.destroy()},computed:{rootContainer:function(){return this.transitionMode?this.$el.children[0]:this.$el},realList:function(){return this.list?this.list:this.value}},watch:{options:{handler:function(t){this.updateOptions(t)},deep:!0},$attrs:{handler:function(t){this.updateOptions(t)},deep:!0},realList:function(){this.computeIndexes()}},methods:{getIsFunctional:function(){var t=this._vnode.fnOptions;return t&&t.functional},getTag:function(){return this.tag||this.element},updateOptions:function(t){for(var e in t){var n=Object(C["a"])(e);-1===F.indexOf(n)&&this._sortable.option(n,t[e])}},getChildrenNodes:function(){if(this.noneFunctionalComponentMode)return this.$children[0].$slots.default;var t=this.$slots.default;return this.transitionMode?t[0].child.$slots.default:t},computeIndexes:function(){var t=this;this.$nextTick((function(){t.visibleIndexes=k(t.getChildrenNodes(),t.rootContainer.children,t.transitionMode,t.footerOffset)}))},getUnderlyingVm:function(t){var e=$(this.getChildrenNodes()||[],t);if(-1===e)return null;var n=this.realList[e];return{index:e,element:n}},getUnderlyingPotencialDraggableComponent:function(t){var e=t.__vue__;return e&&e.$options&&j(e.$options._componentTag)?e.$parent:!("realList"in e)&&1===e.$children.length&&"realList"in e.$children[0]?e.$children[0]:e},emitChanges:function(t){var e=this;this.$nextTick((function(){e.$emit("change",t)}))},alterList:function(t){if(this.list)t(this.list);else{var e=S(this.value);t(e),this.$emit("input",e)}},spliceList:function(){var t=arguments,e=function(e){return e.splice.apply(e,S(t))};this.alterList(e)},updatePosition:function(t,e){var n=function(n){return n.splice(e,0,n.splice(t,1)[0])};this.alterList(n)},getRelatedContextFromMoveEvent:function(t){var e=t.to,n=t.related,r=this.getUnderlyingPotencialDraggableComponent(e);if(!r)return{component:r};var o=r.realList,a={list:o,component:r};if(e!==n&&o&&r.getUnderlyingVm){var s=r.getUnderlyingVm(n);if(s)return i()(s,a)}return a},getVmIndex:function(t){var e=this.visibleIndexes,n=e.length;return t>n-1?n:e[t]},getComponent:function(){return this.$slots.default[0].componentInstance},resetTransitionData:function(t){if(this.noTransitionOnDrag&&this.transitionMode){var e=this.getChildrenNodes();e[t].data=null;var n=this.getComponent();n.children=[],n.kept=void 0}},onDragStart:function(t){this.context=this.getUnderlyingVm(t.item),t.item._underlying_vm_=this.clone(this.context.element),z=t.item},onDragAdd:function(t){var e=t.item._underlying_vm_;if(void 0!==e){Object(C["d"])(t.item);var n=this.getVmIndex(t.newIndex);this.spliceList(n,0,e),this.computeIndexes();var r={element:e,newIndex:n};this.emitChanges({added:r})}},onDragRemove:function(t){if(Object(C["c"])(this.rootContainer,t.item,t.oldIndex),"clone"!==t.pullMode){var e=this.context.index;this.spliceList(e,1);var n={element:this.context.element,oldIndex:e};this.resetTransitionData(e),this.emitChanges({removed:n})}else Object(C["d"])(t.clone)},onDragUpdate:function(t){Object(C["d"])(t.item),Object(C["c"])(t.from,t.item,t.oldIndex);var e=this.context.index,n=this.getVmIndex(t.newIndex);this.updatePosition(e,n);var r={element:this.context.element,oldIndex:e,newIndex:n};this.emitChanges({moved:r})},updateProperty:function(t,e){t.hasOwnProperty(e)&&(t[e]+=this.headerOffset)},computeFutureIndex:function(t,e){if(!t.element)return 0;var n=S(e.to.children).filter((function(t){return"none"!==t.style["display"]})),r=n.indexOf(e.related),o=t.component.getVmIndex(r),i=-1!==n.indexOf(z);return i||!e.willInsertAfter?o:o+1},onDragMove:function(t,e){var n=this.move;if(!n||!this.realList)return!0;var r=this.getRelatedContextFromMoveEvent(t),o=this.context,a=this.computeFutureIndex(r,t);i()(o,{futureIndex:a});var s=i()({},t,{relatedContext:r,draggedContext:o});return n(s,e)},onDragEnd:function(){this.computeIndexes(),z=null}}};"undefined"!==typeof window&&"Vue"in window&&window.Vue.component("draggable",H);var B=H;e["default"]=B}})["default"]},3360:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n("78ef");e.default=function(){for(var t=arguments.length,e=Array(t),n=0;n0&&e.reduce((function(e,n){return e&&n.apply(t,r)}),!0)}))}},"342f":function(t,e,n){var r=n("d066");t.exports=r("navigator","userAgent")||""},"35a1":function(t,e,n){var r=n("f5df"),o=n("3f8c"),i=n("b622"),a=i("iterator");t.exports=function(t){if(void 0!=t)return t[a]||t["@@iterator"]||o[r(t)]}},"37e8":function(t,e,n){var r=n("83ab"),o=n("9bf2"),i=n("825a"),a=n("df75");t.exports=r?Object.defineProperties:function(t,e){i(t);var n,r=a(e),s=r.length,c=0;while(s>c)o.f(t,n=r[c++],e[n]);return t}},3835:function(t,e,n){"use strict";function r(t){if(Array.isArray(t))return t}function o(t,e){if("undefined"!==typeof Symbol&&Symbol.iterator in Object(t)){var n=[],r=!0,o=!1,i=void 0;try{for(var a,s=t[Symbol.iterator]();!(r=(a=s.next()).done);r=!0)if(n.push(a.value),e&&n.length===e)break}catch(c){o=!0,i=c}finally{try{r||null==s["return"]||s["return"]()}finally{if(o)throw i}}return n}}n.d(e,"a",(function(){return s}));var i=n("06c5");function a(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function s(t,e){return r(t)||o(t,e)||Object(i["a"])(t,e)||a()}},"3a54":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n("78ef");e.default=(0,r.regex)("alphaNum",/^[a-zA-Z0-9]*$/)},"3bbe":function(t,e,n){var r=n("861d");t.exports=function(t){if(!r(t)&&null!==t)throw TypeError("Can't set "+String(t)+" as a prototype");return t}},"3ca3":function(t,e,n){"use strict";var r=n("6547").charAt,o=n("69f3"),i=n("7dd0"),a="String Iterator",s=o.set,c=o.getterFor(a);i(String,"String",(function(t){s(this,{type:a,string:String(t),index:0})}),(function(){var t,e=c(this),n=e.string,o=e.index;return o>=n.length?{value:void 0,done:!0}:(t=r(n,o),e.index+=t.length,{value:t,done:!1})}))},"3f8c":function(t,e){t.exports={}},"408a":function(t,e,n){var r=n("c6b6");t.exports=function(t){if("number"!=typeof t&&"Number"!=r(t))throw TypeError("Incorrect invocation");return+t}},4160:function(t,e,n){"use strict";var r=n("23e7"),o=n("17c2");r({target:"Array",proto:!0,forced:[].forEach!=o},{forEach:o})},"428f":function(t,e,n){var r=n("da84");t.exports=r},"44ad":function(t,e,n){var r=n("d039"),o=n("c6b6"),i="".split;t.exports=r((function(){return!Object("z").propertyIsEnumerable(0)}))?function(t){return"String"==o(t)?i.call(t,""):Object(t)}:Object},"44d2":function(t,e,n){var r=n("b622"),o=n("7c73"),i=n("9bf2"),a=r("unscopables"),s=Array.prototype;void 0==s[a]&&i.f(s,a,{configurable:!0,value:o(null)}),t.exports=function(t){s[a][t]=!0}},"44de":function(t,e,n){var r=n("da84");t.exports=function(t,e){var n=r.console;n&&n.error&&(1===arguments.length?n.error(t):n.error(t,e))}},"44e7":function(t,e,n){var r=n("861d"),o=n("c6b6"),i=n("b622"),a=i("match");t.exports=function(t){var e;return r(t)&&(void 0!==(e=t[a])?!!e:"RegExp"==o(t))}},"45b8":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n("78ef");e.default=(0,r.regex)("numeric",/^[0-9]*$/)},"466d":function(t,e,n){"use strict";var r=n("d784"),o=n("825a"),i=n("50c4"),a=n("1d80"),s=n("8aa5"),c=n("14c3");r("match",1,(function(t,e,n){return[function(e){var n=a(this),r=void 0==e?void 0:e[t];return void 0!==r?r.call(e,n):new RegExp(e)[t](String(n))},function(t){var r=n(e,t,this);if(r.done)return r.value;var a=o(t),u=String(this);if(!a.global)return c(a,u);var l=a.unicode;a.lastIndex=0;var f,d=[],p=0;while(null!==(f=c(a,u))){var h=String(f[0]);d[p]=h,""===h&&(a.lastIndex=s(u,i(a.lastIndex),l)),p++}return 0===p?null:d}]}))},"46bc":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n("78ef");e.default=function(t){return(0,r.withParams)({type:"maxValue",max:t},(function(e){return!(0,r.req)(e)||(!/\s/.test(e)||e instanceof Date)&&+e<=+t}))}},4840:function(t,e,n){var r=n("825a"),o=n("1c0b"),i=n("b622"),a=i("species");t.exports=function(t,e){var n,i=r(t).constructor;return void 0===i||void 0==(n=r(i)[a])?e:o(n)}},4930:function(t,e,n){var r=n("d039");t.exports=!!Object.getOwnPropertySymbols&&!r((function(){return!String(Symbol())}))},"498a":function(t,e,n){"use strict";var r=n("23e7"),o=n("58a8").trim,i=n("c8d2");r({target:"String",proto:!0,forced:i("trim")},{trim:function(){return o(this)}})},"4d63":function(t,e,n){var r=n("83ab"),o=n("da84"),i=n("94ca"),a=n("7156"),s=n("9bf2").f,c=n("241c").f,u=n("44e7"),l=n("ad6d"),f=n("9f7f"),d=n("6eeb"),p=n("d039"),h=n("69f3").set,v=n("2626"),g=n("b622"),m=g("match"),y=o.RegExp,b=y.prototype,w=/a/g,_=/a/g,x=new y(w)!==w,S=f.UNSUPPORTED_Y,O=r&&i("RegExp",!x||S||p((function(){return _[m]=!1,y(w)!=w||y(_)==_||"/a/i"!=y(w,"i")})));if(O){var E=function(t,e){var n,r=this instanceof E,o=u(t),i=void 0===e;if(!r&&o&&t.constructor===E&&i)return t;x?o&&!i&&(t=t.source):t instanceof E&&(i&&(e=l.call(t)),t=t.source),S&&(n=!!e&&e.indexOf("y")>-1,n&&(e=e.replace(/y/g,"")));var s=a(x?new y(t,e):y(t,e),r?this:b,E);return S&&n&&h(s,{sticky:n}),s},C=function(t){t in E||s(E,t,{configurable:!0,get:function(){return y[t]},set:function(e){y[t]=e}})},A=c(y),$=0;while(A.length>$)C(A[$++]);b.constructor=E,E.prototype=b,d(o,"RegExp",E)}v("RegExp")},"4d64":function(t,e,n){var r=n("fc6a"),o=n("50c4"),i=n("23cb"),a=function(t){return function(e,n,a){var s,c=r(e),u=o(c.length),l=i(a,u);if(t&&n!=n){while(u>l)if(s=c[l++],s!=s)return!0}else for(;u>l;l++)if((t||l in c)&&c[l]===n)return t||l||0;return!t&&-1}};t.exports={includes:a(!0),indexOf:a(!1)}},"4de4":function(t,e,n){"use strict";var r=n("23e7"),o=n("b727").filter,i=n("1dde"),a=n("ae40"),s=i("filter"),c=a("filter");r({target:"Array",proto:!0,forced:!s||!c},{filter:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}})},"4fad":function(t,e,n){var r=n("23e7"),o=n("6f53").entries;r({target:"Object",stat:!0},{entries:function(t){return o(t)}})},"50c4":function(t,e,n){var r=n("a691"),o=Math.min;t.exports=function(t){return t>0?o(r(t),9007199254740991):0}},5135:function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},5319:function(t,e,n){"use strict";var r=n("d784"),o=n("825a"),i=n("7b0b"),a=n("50c4"),s=n("a691"),c=n("1d80"),u=n("8aa5"),l=n("14c3"),f=Math.max,d=Math.min,p=Math.floor,h=/\$([$&'`]|\d\d?|<[^>]*>)/g,v=/\$([$&'`]|\d\d?)/g,g=function(t){return void 0===t?t:String(t)};r("replace",2,(function(t,e,n,r){var m=r.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,y=r.REPLACE_KEEPS_$0,b=m?"$":"$0";return[function(n,r){var o=c(this),i=void 0==n?void 0:n[t];return void 0!==i?i.call(n,o,r):e.call(String(o),n,r)},function(t,r){if(!m&&y||"string"===typeof r&&-1===r.indexOf(b)){var i=n(e,t,this,r);if(i.done)return i.value}var c=o(t),p=String(this),h="function"===typeof r;h||(r=String(r));var v=c.global;if(v){var _=c.unicode;c.lastIndex=0}var x=[];while(1){var S=l(c,p);if(null===S)break;if(x.push(S),!v)break;var O=String(S[0]);""===O&&(c.lastIndex=u(p,a(c.lastIndex),_))}for(var E="",C=0,A=0;A=C&&(E+=p.slice(C,k)+D,C=k+$.length)}return E+p.slice(C)}];function w(t,n,r,o,a,s){var c=r+t.length,u=o.length,l=v;return void 0!==a&&(a=i(a),l=h),e.call(s,l,(function(e,i){var s;switch(i.charAt(0)){case"$":return"$";case"&":return t;case"`":return n.slice(0,r);case"'":return n.slice(c);case"<":s=a[i.slice(1,-1)];break;default:var l=+i;if(0===l)return e;if(l>u){var f=p(l/10);return 0===f?e:f<=u?void 0===o[f-1]?i.charAt(1):o[f-1]+i.charAt(1):e}s=o[l-1]}return void 0===s?"":s}))}}))},"53ca":function(t,e,n){"use strict";function r(t){return r="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r(t)}n.d(e,"a",(function(){return r}))},5530:function(t,e,n){"use strict";function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function o(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function i(t){for(var e=1;e=e?t:""+Array(e+1-r.length).join(n)+t},d={s:f,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),o=n%60;return(e<=0?"+":"-")+f(r,2,"0")+":"+f(o,2,"0")},m:function(t,e){var n=12*(e.year()-t.year())+(e.month()-t.month()),r=t.clone().add(n,a),o=e-r<0,i=t.clone().add(n+(o?-1:1),a);return Number(-(n+(e-r)/(o?r-i:i-r))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(u){return{M:a,y:c,w:i,d:o,D:"date",h:r,m:n,s:e,ms:t,Q:s}[u]||String(u||"").toLowerCase().replace(/s$/,"")},u:function(t){return void 0===t}},p={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_")},h="en",v={};v[h]=p;var g=function(t){return t instanceof w},m=function(t,e,n){var r;if(!t)return h;if("string"==typeof t)v[t]&&(r=t),e&&(v[t]=e,r=t);else{var o=t.name;v[o]=t,r=o}return!n&&r&&(h=r),r||!n&&h},y=function(t,e,n){if(g(t))return t.clone();var r=e?"string"==typeof e?{format:e,pl:n}:e:{};return r.date=t,new w(r)},b=d;b.l=m,b.i=g,b.w=function(t,e){return y(t,{locale:e.$L,utc:e.$u,$offset:e.$offset})};var w=function(){function f(t){this.$L=this.$L||m(t.locale,null,!0),this.parse(t)}var d=f.prototype;return d.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(b.u(e))return new Date;if(e instanceof Date)return new Date(e);if("string"==typeof e&&!/Z$/i.test(e)){var r=e.match(u);if(r)return n?new Date(Date.UTC(r[1],r[2]-1,r[3]||1,r[4]||0,r[5]||0,r[6]||0,r[7]||0)):new Date(r[1],r[2]-1,r[3]||1,r[4]||0,r[5]||0,r[6]||0,r[7]||0)}return new Date(e)}(t),this.init()},d.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},d.$utils=function(){return b},d.isValid=function(){return!("Invalid Date"===this.$d.toString())},d.isSame=function(t,e){var n=y(t);return this.startOf(e)<=n&&n<=this.endOf(e)},d.isAfter=function(t,e){return y(t)()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$)/;e.default=(0,r.regex)("email",o)},"5db3":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n("78ef");e.default=function(t){return(0,r.withParams)({type:"minLength",min:t},(function(e){return!(0,r.req)(e)||(0,r.len)(e)>=t}))}},"5e89":function(t,e,n){var r=n("861d"),o=Math.floor;t.exports=function(t){return!r(t)&&isFinite(t)&&o(t)===t}},"60da":function(t,e,n){"use strict";var r=n("83ab"),o=n("d039"),i=n("df75"),a=n("7418"),s=n("d1e7"),c=n("7b0b"),u=n("44ad"),l=Object.assign,f=Object.defineProperty;t.exports=!l||o((function(){if(r&&1!==l({b:1},l(f({},"a",{enumerable:!0,get:function(){f(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var t={},e={},n=Symbol(),o="abcdefghijklmnopqrst";return t[n]=7,o.split("").forEach((function(t){e[t]=t})),7!=l({},t)[n]||i(l({},e)).join("")!=o}))?function(t,e){var n=c(t),o=arguments.length,l=1,f=a.f,d=s.f;while(o>l){var p,h=u(arguments[l++]),v=f?i(h).concat(f(h)):i(h),g=v.length,m=0;while(g>m)p=v[m++],r&&!d.call(h,p)||(n[p]=h[p])}return n}:l},6235:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n("78ef");e.default=(0,r.regex)("alpha",/^[a-zA-Z]*$/)},6547:function(t,e,n){var r=n("a691"),o=n("1d80"),i=function(t){return function(e,n){var i,a,s=String(o(e)),c=r(n),u=s.length;return c<0||c>=u?t?"":void 0:(i=s.charCodeAt(c),i<55296||i>56319||c+1===u||(a=s.charCodeAt(c+1))<56320||a>57343?t?s.charAt(c):i:t?s.slice(c,c+2):a-56320+(i-55296<<10)+65536)}};t.exports={codeAt:i(!1),charAt:i(!0)}},"65f0":function(t,e,n){var r=n("861d"),o=n("e8b5"),i=n("b622"),a=i("species");t.exports=function(t,e){var n;return o(t)&&(n=t.constructor,"function"!=typeof n||n!==Array&&!o(n.prototype)?r(n)&&(n=n[a],null===n&&(n=void 0)):n=void 0),new(void 0===n?Array:n)(0===e?0:e)}},"69f3":function(t,e,n){var r,o,i,a=n("7f9a"),s=n("da84"),c=n("861d"),u=n("9112"),l=n("5135"),f=n("f772"),d=n("d012"),p=s.WeakMap,h=function(t){return i(t)?o(t):r(t,{})},v=function(t){return function(e){var n;if(!c(e)||(n=o(e)).type!==t)throw TypeError("Incompatible receiver, "+t+" required");return n}};if(a){var g=new p,m=g.get,y=g.has,b=g.set;r=function(t,e){return b.call(g,t,e),e},o=function(t){return m.call(g,t)||{}},i=function(t){return y.call(g,t)}}else{var w=f("state");d[w]=!0,r=function(t,e){return u(t,w,e),e},o=function(t){return l(t,w)?t[w]:{}},i=function(t){return l(t,w)}}t.exports={set:r,get:o,has:i,enforce:h,getterFor:v}},"6b75":function(t,e,n){"use strict";function r(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);nl)n=c[l++],r&&!a.call(s,n)||f.push(t?[n,s[n]]:s[n]);return f}};t.exports={entries:s(!0),values:s(!1)}},7156:function(t,e,n){var r=n("861d"),o=n("d2bb");t.exports=function(t,e,n){var i,a;return o&&"function"==typeof(i=e.constructor)&&i!==n&&r(a=i.prototype)&&a!==n.prototype&&o(t,a),t}},7418:function(t,e){e.f=Object.getOwnPropertySymbols},"746f":function(t,e,n){var r=n("428f"),o=n("5135"),i=n("e538"),a=n("9bf2").f;t.exports=function(t){var e=r.Symbol||(r.Symbol={});o(e,t)||a(e,t,{value:i.f(t)})}},"772d":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n("78ef"),o=/^(?:(?:https?|ftp):\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})))(?::\d{2,5})?(?:[/?#]\S*)?$/i;e.default=(0,r.regex)("url",o)},7839:function(t,e){t.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},"78ef":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.regex=e.ref=e.len=e.req=e.withParams=void 0;var r=n("8750"),o=i(r);function i(t){return t&&t.__esModule?t:{default:t}}e.withParams=o.default;var a=e.req=function(t){if(Array.isArray(t))return!!t.length;if(void 0===t||null===t||!1===t)return!1;if(t instanceof Date)return!isNaN(t.getTime());if("object"===typeof t){for(var e in t)return!0;return!1}return!!String(t).length};e.len=function(t){return Array.isArray(t)?t.length:"object"===typeof t?Object.keys(t).length:String(t).length},e.ref=function(t,e,n){return"function"===typeof t?t.call(e,n):n[t]},e.regex=function(t,e){return(0,o.default)({type:t},(function(t){return!a(t)||e.test(t)}))}},"7b0b":function(t,e,n){var r=n("1d80");t.exports=function(t){return Object(r(t))}},"7c73":function(t,e,n){var r,o=n("825a"),i=n("37e8"),a=n("7839"),s=n("d012"),c=n("1be4"),u=n("cc12"),l=n("f772"),f=">",d="<",p="prototype",h="script",v=l("IE_PROTO"),g=function(){},m=function(t){return d+h+f+t+d+"/"+h+f},y=function(t){t.write(m("")),t.close();var e=t.parentWindow.Object;return t=null,e},b=function(){var t,e=u("iframe"),n="java"+h+":";return e.style.display="none",c.appendChild(e),e.src=String(n),t=e.contentWindow.document,t.open(),t.write(m("document.F=Object")),t.close(),t.F},w=function(){try{r=document.domain&&new ActiveXObject("htmlfile")}catch(e){}w=r?y(r):b();var t=a.length;while(t--)delete w[p][a[t]];return w()};s[v]=!0,t.exports=Object.create||function(t,e){var n;return null!==t?(g[p]=o(t),n=new g,g[p]=null,n[v]=t):n=w(),void 0===e?n:i(n,e)}},"7dd0":function(t,e,n){"use strict";var r=n("23e7"),o=n("9ed3"),i=n("e163"),a=n("d2bb"),s=n("d44e"),c=n("9112"),u=n("6eeb"),l=n("b622"),f=n("c430"),d=n("3f8c"),p=n("ae93"),h=p.IteratorPrototype,v=p.BUGGY_SAFARI_ITERATORS,g=l("iterator"),m="keys",y="values",b="entries",w=function(){return this};t.exports=function(t,e,n,l,p,_,x){o(n,e,l);var S,O,E,C=function(t){if(t===p&&T)return T;if(!v&&t in k)return k[t];switch(t){case m:return function(){return new n(this,t)};case y:return function(){return new n(this,t)};case b:return function(){return new n(this,t)}}return function(){return new n(this)}},A=e+" Iterator",$=!1,k=t.prototype,M=k[g]||k["@@iterator"]||p&&k[p],T=!v&&M||C(p),j="Array"==e&&k.entries||M;if(j&&(S=i(j.call(new t)),h!==Object.prototype&&S.next&&(f||i(S)===h||(a?a(S,h):"function"!=typeof S[g]&&c(S,g,w)),s(S,A,!0,!0),f&&(d[A]=w))),p==y&&M&&M.name!==y&&($=!0,T=function(){return M.call(this)}),f&&!x||k[g]===T||c(k,g,T),d[e]=T,p)if(O={values:C(y),keys:_?T:C(m),entries:C(b)},x)for(E in O)!v&&!$&&E in k||u(k,E,O[E]);else r({target:e,proto:!0,forced:v||$},O);return O}},"7f9a":function(t,e,n){var r=n("da84"),o=n("8925"),i=r.WeakMap;t.exports="function"===typeof i&&/native code/.test(o(i))},"825a":function(t,e,n){var r=n("861d");t.exports=function(t){if(!r(t))throw TypeError(String(t)+" is not an object");return t}},"83ab":function(t,e,n){var r=n("d039");t.exports=!r((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},8418:function(t,e,n){"use strict";var r=n("c04e"),o=n("9bf2"),i=n("5c6c");t.exports=function(t,e,n){var a=r(e);a in t?o.f(t,a,i(0,n)):t[a]=n}},"841c":function(t,e,n){"use strict";var r=n("d784"),o=n("825a"),i=n("1d80"),a=n("129f"),s=n("14c3");r("search",1,(function(t,e,n){return[function(e){var n=i(this),r=void 0==e?void 0:e[t];return void 0!==r?r.call(e,n):new RegExp(e)[t](String(n))},function(t){var r=n(e,t,this);if(r.done)return r.value;var i=o(t),c=String(this),u=i.lastIndex;a(u,0)||(i.lastIndex=0);var l=s(i,c);return a(i.lastIndex,u)||(i.lastIndex=u),null===l?-1:l.index}]}))},"857a":function(t,e,n){var r=n("1d80"),o=/"/g;t.exports=function(t,e,n,i){var a=String(r(t)),s="<"+e;return""!==n&&(s+=" "+n+'="'+String(i).replace(o,""")+'"'),s+">"+a+""}},"861d":function(t,e){t.exports=function(t){return"object"===typeof t?null!==t:"function"===typeof t}},8750:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n("0234").withParams;e.default=r},8925:function(t,e,n){var r=n("c6cd"),o=Function.toString;"function"!=typeof r.inspectSource&&(r.inspectSource=function(t){return o.call(t)}),t.exports=r.inspectSource},"8a79":function(t,e,n){"use strict";var r=n("23e7"),o=n("06cf").f,i=n("50c4"),a=n("5a34"),s=n("1d80"),c=n("ab13"),u=n("c430"),l="".endsWith,f=Math.min,d=c("endsWith"),p=!u&&!d&&!!function(){var t=o(String.prototype,"endsWith");return t&&!t.writable}();r({target:"String",proto:!0,forced:!p&&!d},{endsWith:function(t){var e=String(s(this));a(t);var n=arguments.length>1?arguments[1]:void 0,r=i(e.length),o=void 0===n?r:f(i(n),r),c=String(t);return l?l.call(e,c,o):e.slice(o-c.length,o)===c}})},"8aa5":function(t,e,n){"use strict";var r=n("6547").charAt;t.exports=function(t,e,n){return e+(n?r(t,e).length:1)}},"8ba4":function(t,e,n){var r=n("23e7"),o=n("5e89");r({target:"Number",stat:!0},{isInteger:o})},"8c4f":function(t,e,n){"use strict"; +function n(t){var e=Number(t.version.split(".")[0]);if(e>=2)t.mixin({beforeCreate:r});else{var n=t.prototype._init;t.prototype._init=function(t){void 0===t&&(t={}),t.init=t.init?[r].concat(t.init):r,n.call(this,t)}}function r(){var t=this.$options;t.store?this.$store="function"===typeof t.store?t.store():t.store:t.parent&&t.parent.$store&&(this.$store=t.parent.$store)}}var r="undefined"!==typeof window?window:"undefined"!==typeof t?t:{},o=r.__VUE_DEVTOOLS_GLOBAL_HOOK__;function i(t){o&&(t._devtoolHook=o,o.emit("vuex:init",t),o.on("vuex:travel-to-state",(function(e){t.replaceState(e)})),t.subscribe((function(t,e){o.emit("vuex:mutation",t,e)}),{prepend:!0}),t.subscribeAction((function(t,e){o.emit("vuex:action",t,e)}),{prepend:!0}))}function a(t,e){return t.filter(e)[0]}function s(t,e){if(void 0===e&&(e=[]),null===t||"object"!==typeof t)return t;var n=a(e,(function(e){return e.original===t}));if(n)return n.copy;var r=Array.isArray(t)?[]:{};return e.push({original:t,copy:r}),Object.keys(t).forEach((function(n){r[n]=s(t[n],e)})),r}function c(t,e){Object.keys(t).forEach((function(n){return e(t[n],n)}))}function u(t){return null!==t&&"object"===typeof t}function l(t){return t&&"function"===typeof t.then}function f(t,e){return function(){return t(e)}}var p=function(t,e){this.runtime=e,this._children=Object.create(null),this._rawModule=t;var n=t.state;this.state=("function"===typeof n?n():n)||{}},d={namespaced:{configurable:!0}};d.namespaced.get=function(){return!!this._rawModule.namespaced},p.prototype.addChild=function(t,e){this._children[t]=e},p.prototype.removeChild=function(t){delete this._children[t]},p.prototype.getChild=function(t){return this._children[t]},p.prototype.hasChild=function(t){return t in this._children},p.prototype.update=function(t){this._rawModule.namespaced=t.namespaced,t.actions&&(this._rawModule.actions=t.actions),t.mutations&&(this._rawModule.mutations=t.mutations),t.getters&&(this._rawModule.getters=t.getters)},p.prototype.forEachChild=function(t){c(this._children,t)},p.prototype.forEachGetter=function(t){this._rawModule.getters&&c(this._rawModule.getters,t)},p.prototype.forEachAction=function(t){this._rawModule.actions&&c(this._rawModule.actions,t)},p.prototype.forEachMutation=function(t){this._rawModule.mutations&&c(this._rawModule.mutations,t)},Object.defineProperties(p.prototype,d);var h=function(t){this.register([],t,!1)};function v(t,e,n){if(e.update(n),n.modules)for(var r in n.modules){if(!e.getChild(r))return void 0;v(t.concat(r),e.getChild(r),n.modules[r])}}h.prototype.get=function(t){return t.reduce((function(t,e){return t.getChild(e)}),this.root)},h.prototype.getNamespace=function(t){var e=this.root;return t.reduce((function(t,n){return e=e.getChild(n),t+(e.namespaced?n+"/":"")}),"")},h.prototype.update=function(t){v([],this.root,t)},h.prototype.register=function(t,e,n){var r=this;void 0===n&&(n=!0);var o=new p(e,n);if(0===t.length)this.root=o;else{var i=this.get(t.slice(0,-1));i.addChild(t[t.length-1],o)}e.modules&&c(e.modules,(function(e,o){r.register(t.concat(o),e,n)}))},h.prototype.unregister=function(t){var e=this.get(t.slice(0,-1)),n=t[t.length-1],r=e.getChild(n);r&&r.runtime&&e.removeChild(n)},h.prototype.isRegistered=function(t){var e=this.get(t.slice(0,-1)),n=t[t.length-1];return e.hasChild(n)};var m;var g=function(t){var e=this;void 0===t&&(t={}),!m&&"undefined"!==typeof window&&window.Vue&&$(window.Vue);var n=t.plugins;void 0===n&&(n=[]);var r=t.strict;void 0===r&&(r=!1),this._committing=!1,this._actions=Object.create(null),this._actionSubscribers=[],this._mutations=Object.create(null),this._wrappedGetters=Object.create(null),this._modules=new h(t),this._modulesNamespaceMap=Object.create(null),this._subscribers=[],this._watcherVM=new m,this._makeLocalGettersCache=Object.create(null);var o=this,a=this,s=a.dispatch,c=a.commit;this.dispatch=function(t,e){return s.call(o,t,e)},this.commit=function(t,e,n){return c.call(o,t,e,n)},this.strict=r;var u=this._modules.root.state;S(this,u,[],this._modules.root),x(this,u),n.forEach((function(t){return t(e)}));var l=void 0!==t.devtools?t.devtools:m.config.devtools;l&&i(this)},y={state:{configurable:!0}};function b(t,e,n){return e.indexOf(t)<0&&(n&&n.prepend?e.unshift(t):e.push(t)),function(){var n=e.indexOf(t);n>-1&&e.splice(n,1)}}function w(t,e){t._actions=Object.create(null),t._mutations=Object.create(null),t._wrappedGetters=Object.create(null),t._modulesNamespaceMap=Object.create(null);var n=t.state;S(t,n,[],t._modules.root,!0),x(t,n,e)}function x(t,e,n){var r=t._vm;t.getters={},t._makeLocalGettersCache=Object.create(null);var o=t._wrappedGetters,i={};c(o,(function(e,n){i[n]=f(e,t),Object.defineProperty(t.getters,n,{get:function(){return t._vm[n]},enumerable:!0})}));var a=m.config.silent;m.config.silent=!0,t._vm=new m({data:{$$state:e},computed:i}),m.config.silent=a,t.strict&&E(t),r&&(n&&t._withCommit((function(){r._data.$$state=null})),m.nextTick((function(){return r.$destroy()})))}function S(t,e,n,r,o){var i=!n.length,a=t._modules.getNamespace(n);if(r.namespaced&&(t._modulesNamespaceMap[a],t._modulesNamespaceMap[a]=r),!i&&!o){var s=A(e,n.slice(0,-1)),c=n[n.length-1];t._withCommit((function(){m.set(s,c,r.state)}))}var u=r.context=O(t,a,n);r.forEachMutation((function(e,n){var r=a+n;k(t,r,e,u)})),r.forEachAction((function(e,n){var r=e.root?n:a+n,o=e.handler||e;C(t,r,o,u)})),r.forEachGetter((function(e,n){var r=a+n;M(t,r,e,u)})),r.forEachChild((function(r,i){S(t,e,n.concat(i),r,o)}))}function O(t,e,n){var r=""===e,o={dispatch:r?t.dispatch:function(n,r,o){var i=T(n,r,o),a=i.payload,s=i.options,c=i.type;return s&&s.root||(c=e+c),t.dispatch(c,a)},commit:r?t.commit:function(n,r,o){var i=T(n,r,o),a=i.payload,s=i.options,c=i.type;s&&s.root||(c=e+c),t.commit(c,a,s)}};return Object.defineProperties(o,{getters:{get:r?function(){return t.getters}:function(){return _(t,e)}},state:{get:function(){return A(t.state,n)}}}),o}function _(t,e){if(!t._makeLocalGettersCache[e]){var n={},r=e.length;Object.keys(t.getters).forEach((function(o){if(o.slice(0,r)===e){var i=o.slice(r);Object.defineProperty(n,i,{get:function(){return t.getters[o]},enumerable:!0})}})),t._makeLocalGettersCache[e]=n}return t._makeLocalGettersCache[e]}function k(t,e,n,r){var o=t._mutations[e]||(t._mutations[e]=[]);o.push((function(e){n.call(t,r.state,e)}))}function C(t,e,n,r){var o=t._actions[e]||(t._actions[e]=[]);o.push((function(e){var o=n.call(t,{dispatch:r.dispatch,commit:r.commit,getters:r.getters,state:r.state,rootGetters:t.getters,rootState:t.state},e);return l(o)||(o=Promise.resolve(o)),t._devtoolHook?o.catch((function(e){throw t._devtoolHook.emit("vuex:error",e),e})):o}))}function M(t,e,n,r){t._wrappedGetters[e]||(t._wrappedGetters[e]=function(t){return n(r.state,r.getters,t.state,t.getters)})}function E(t){t._vm.$watch((function(){return this._data.$$state}),(function(){0}),{deep:!0,sync:!0})}function A(t,e){return e.reduce((function(t,e){return t[e]}),t)}function T(t,e,n){return u(t)&&t.type&&(n=e,e=t,t=t.type),{type:t,payload:e,options:n}}function $(t){m&&t===m||(m=t,n(m))}y.state.get=function(){return this._vm._data.$$state},y.state.set=function(t){0},g.prototype.commit=function(t,e,n){var r=this,o=T(t,e,n),i=o.type,a=o.payload,s=(o.options,{type:i,payload:a}),c=this._mutations[i];c&&(this._withCommit((function(){c.forEach((function(t){t(a)}))})),this._subscribers.slice().forEach((function(t){return t(s,r.state)})))},g.prototype.dispatch=function(t,e){var n=this,r=T(t,e),o=r.type,i=r.payload,a={type:o,payload:i},s=this._actions[o];if(s){try{this._actionSubscribers.slice().filter((function(t){return t.before})).forEach((function(t){return t.before(a,n.state)}))}catch(u){0}var c=s.length>1?Promise.all(s.map((function(t){return t(i)}))):s[0](i);return new Promise((function(t,e){c.then((function(e){try{n._actionSubscribers.filter((function(t){return t.after})).forEach((function(t){return t.after(a,n.state)}))}catch(u){0}t(e)}),(function(t){try{n._actionSubscribers.filter((function(t){return t.error})).forEach((function(e){return e.error(a,n.state,t)}))}catch(u){0}e(t)}))}))}},g.prototype.subscribe=function(t,e){return b(t,this._subscribers,e)},g.prototype.subscribeAction=function(t,e){var n="function"===typeof t?{before:t}:t;return b(n,this._actionSubscribers,e)},g.prototype.watch=function(t,e,n){var r=this;return this._watcherVM.$watch((function(){return t(r.state,r.getters)}),e,n)},g.prototype.replaceState=function(t){var e=this;this._withCommit((function(){e._vm._data.$$state=t}))},g.prototype.registerModule=function(t,e,n){void 0===n&&(n={}),"string"===typeof t&&(t=[t]),this._modules.register(t,e),S(this,this.state,t,this._modules.get(t),n.preserveState),x(this,this.state)},g.prototype.unregisterModule=function(t){var e=this;"string"===typeof t&&(t=[t]),this._modules.unregister(t),this._withCommit((function(){var n=A(e.state,t.slice(0,-1));m.delete(n,t[t.length-1])})),w(this)},g.prototype.hasModule=function(t){return"string"===typeof t&&(t=[t]),this._modules.isRegistered(t)},g.prototype.hotUpdate=function(t){this._modules.update(t),w(this,!0)},g.prototype._withCommit=function(t){var e=this._committing;this._committing=!0,t(),this._committing=e},Object.defineProperties(g.prototype,y);var D=z((function(t,e){var n={};return R(e).forEach((function(e){var r=e.key,o=e.val;n[r]=function(){var e=this.$store.state,n=this.$store.getters;if(t){var r=F(this.$store,"mapState",t);if(!r)return;e=r.context.state,n=r.context.getters}return"function"===typeof o?o.call(this,e,n):e[o]},n[r].vuex=!0})),n})),N=z((function(t,e){var n={};return R(e).forEach((function(e){var r=e.key,o=e.val;n[r]=function(){var e=[],n=arguments.length;while(n--)e[n]=arguments[n];var r=this.$store.commit;if(t){var i=F(this.$store,"mapMutations",t);if(!i)return;r=i.context.commit}return"function"===typeof o?o.apply(this,[r].concat(e)):r.apply(this.$store,[o].concat(e))}})),n})),P=z((function(t,e){var n={};return R(e).forEach((function(e){var r=e.key,o=e.val;o=t+o,n[r]=function(){if(!t||F(this.$store,"mapGetters",t))return this.$store.getters[o]},n[r].vuex=!0})),n})),j=z((function(t,e){var n={};return R(e).forEach((function(e){var r=e.key,o=e.val;n[r]=function(){var e=[],n=arguments.length;while(n--)e[n]=arguments[n];var r=this.$store.dispatch;if(t){var i=F(this.$store,"mapActions",t);if(!i)return;r=i.context.dispatch}return"function"===typeof o?o.apply(this,[r].concat(e)):r.apply(this.$store,[o].concat(e))}})),n})),I=function(t){return{mapState:D.bind(null,t),mapGetters:P.bind(null,t),mapMutations:N.bind(null,t),mapActions:j.bind(null,t)}};function R(t){return L(t)?Array.isArray(t)?t.map((function(t){return{key:t,val:t}})):Object.keys(t).map((function(e){return{key:e,val:t[e]}})):[]}function L(t){return Array.isArray(t)||u(t)}function z(t){return function(e,n){return"string"!==typeof e?(n=e,e=""):"/"!==e.charAt(e.length-1)&&(e+="/"),t(e,n)}}function F(t,e,n){var r=t._modulesNamespaceMap[n];return r}function B(t){void 0===t&&(t={});var e=t.collapsed;void 0===e&&(e=!0);var n=t.filter;void 0===n&&(n=function(t,e,n){return!0});var r=t.transformer;void 0===r&&(r=function(t){return t});var o=t.mutationTransformer;void 0===o&&(o=function(t){return t});var i=t.actionFilter;void 0===i&&(i=function(t,e){return!0});var a=t.actionTransformer;void 0===a&&(a=function(t){return t});var c=t.logMutations;void 0===c&&(c=!0);var u=t.logActions;void 0===u&&(u=!0);var l=t.logger;return void 0===l&&(l=console),function(t){var f=s(t.state);"undefined"!==typeof l&&(c&&t.subscribe((function(t,i){var a=s(i);if(n(t,f,a)){var c=H(),u=o(t),p="mutation "+t.type+c;V(l,p,e),l.log("%c prev state","color: #9E9E9E; font-weight: bold",r(f)),l.log("%c mutation","color: #03A9F4; font-weight: bold",u),l.log("%c next state","color: #4CAF50; font-weight: bold",r(a)),q(l)}f=a})),u&&t.subscribeAction((function(t,n){if(i(t,n)){var r=H(),o=a(t),s="action "+t.type+r;V(l,s,e),l.log("%c action","color: #03A9F4; font-weight: bold",o),q(l)}})))}}function V(t,e,n){var r=n?t.groupCollapsed:t.group;try{r.call(t,e)}catch(o){t.log(e)}}function q(t){try{t.groupEnd()}catch(e){t.log("—— log end ——")}}function H(){var t=new Date;return" @ "+U(t.getHours(),2)+":"+U(t.getMinutes(),2)+":"+U(t.getSeconds(),2)+"."+U(t.getMilliseconds(),3)}function W(t,e){return new Array(e+1).join(t)}function U(t,e){return W("0",e-t.toString().length)+t}var K={Store:g,install:$,version:"3.5.1",mapState:D,mapMutations:N,mapGetters:P,mapActions:j,createNamespacedHelpers:I,createLogger:B};e["a"]=K}).call(this,n("c8ba"))},"304a":function(t,e,n){"use strict";function r(t){this.content=t}n.d(e,"a",(function(){return dt})),n.d(e,"b",(function(){return Tt})),n.d(e,"c",(function(){return c})),n.d(e,"d",(function(){return d})),n.d(e,"e",(function(){return lt})),n.d(e,"f",(function(){return R})),n.d(e,"g",(function(){return P})),n.d(e,"h",(function(){return h})),n.d(e,"i",(function(){return ft})),n.d(e,"j",(function(){return v})),r.prototype={constructor:r,find:function(t){for(var e=0;e>1}},r.from=function(t){if(t instanceof r)return t;var e=[];if(t)for(var n in t)e.push(n,t[n]);return new r(e)};var o=r,i=o;function a(t,e,n){for(var r=0;;r++){if(r==t.childCount||r==e.childCount)return t.childCount==e.childCount?null:n;var o=t.child(r),i=e.child(r);if(o!=i){if(!o.sameMarkup(i))return n;if(o.isText&&o.text!=i.text){for(var s=0;o.text[s]==i.text[s];s++)n++;return n}if(o.content.size||i.content.size){var c=a(o.content,i.content,n+1);if(null!=c)return c}n+=o.nodeSize}else n+=o.nodeSize}}function s(t,e,n,r){for(var o=t.childCount,i=e.childCount;;){if(0==o||0==i)return o==i?null:{a:n,b:r};var a=t.child(--o),c=e.child(--i),u=a.nodeSize;if(a!=c){if(!a.sameMarkup(c))return{a:n,b:r};if(a.isText&&a.text!=c.text){var l=0,f=Math.min(a.text.length,c.text.length);while(lt&&!1!==n(s,r+a,o,i)&&s.content.size){var u=a+1;s.nodesBetween(Math.max(0,t-u),Math.min(s.content.size,e-u),n,r+u)}a=c}},c.prototype.descendants=function(t){this.nodesBetween(0,this.size,t)},c.prototype.textBetween=function(t,e,n,r){var o="",i=!0;return this.nodesBetween(t,e,(function(a,s){a.isText?(o+=a.text.slice(Math.max(t,s)-s,e-s),i=!n):a.isLeaf&&r?(o+=r,i=!n):!i&&a.isBlock&&(o+=n,i=!0)}),0),o},c.prototype.append=function(t){if(!t.size)return this;if(!this.size)return t;var e=this.lastChild,n=t.firstChild,r=this.content.slice(),o=0;for(e.isText&&e.sameMarkup(n)&&(r[r.length-1]=e.withText(e.text+n.text),o=1);ot)for(var o=0,i=0;it&&((ie)&&(a=a.isText?a.cut(Math.max(0,t-i),Math.min(a.text.length,e-i)):a.cut(Math.max(0,t-i-1),Math.min(a.content.size,e-i-1))),n.push(a),r+=a.nodeSize),i=s}return new c(n,r)},c.prototype.cutByIndex=function(t,e){return t==e?c.empty:0==t&&e==this.content.length?this:new c(this.content.slice(t,e))},c.prototype.replaceChild=function(t,e){var n=this.content[t];if(n==e)return this;var r=this.content.slice(),o=this.size+e.nodeSize-n.nodeSize;return r[t]=e,new c(r,o)},c.prototype.addToStart=function(t){return new c([t].concat(this.content),this.size+t.nodeSize)},c.prototype.addToEnd=function(t){return new c(this.content.concat(t),this.size+t.nodeSize)},c.prototype.eq=function(t){if(this.content.length!=t.content.length)return!1;for(var e=0;ethis.size||t<0)throw new RangeError("Position "+t+" outside of fragment ("+this+")");for(var n=0,r=0;;n++){var o=this.child(n),i=r+o.nodeSize;if(i>=t)return i==t||e>0?f(n+1,i):f(n,r);r=i}},c.prototype.toString=function(){return"<"+this.toStringInner()+">"},c.prototype.toStringInner=function(){return this.content.join(", ")},c.prototype.toJSON=function(){return this.content.length?this.content.map((function(t){return t.toJSON()})):null},c.fromJSON=function(t,e){if(!e)return c.empty;if(!Array.isArray(e))throw new RangeError("Invalid input for Fragment.fromJSON");return new c(e.map(t.nodeFromJSON))},c.fromArray=function(t){if(!t.length)return c.empty;for(var e,n=0,r=0;rthis.type.rank&&(e||(e=t.slice(0,r)),e.push(this),n=!0),e&&e.push(o)}}return e||(e=t.slice()),n||e.push(this),e},d.prototype.removeFromSet=function(t){for(var e=0;et.depth)throw new h("Inserted content deeper than insertion position");if(t.depth-n.openStart!=e.depth-n.openEnd)throw new h("Inconsistent open depths");return w(t,e,n,0)}function w(t,e,n,r){var o=t.index(r),i=t.node(r);if(o==e.index(r)&&r=0&&t.isText&&t.sameMarkup(e[n])?e[n]=t.withText(e[n].text+t.text):e.push(t)}function _(t,e,n,r){var o=(e||t).node(n),i=0,a=e?e.index(n):o.childCount;t&&(i=t.index(n),t.depth>n?i++:t.textOffset&&(O(t.nodeAfter,r),i++));for(var s=i;so&&S(t,e,o+1),a=r.depth>o&&S(n,r,o+1),s=[];return _(null,t,o,s),i&&a&&e.index(o)==n.index(o)?(x(i,a),O(k(i,C(t,e,n,r,o+1)),s)):(i&&O(k(i,M(t,e,o+1)),s),_(e,n,o,s),a&&O(k(a,M(n,r,o+1)),s)),_(r,null,o,s),new c(s)}function M(t,e,n){var r=[];if(_(null,t,n,r),t.depth>n){var o=S(t,e,n+1);O(k(o,M(t,e,n+1)),r)}return _(e,null,n,r),new c(r)}function E(t,e){for(var n=e.depth-t.openStart,r=e.node(n),o=r.copy(t.content),i=n-1;i>=0;i--)o=e.node(i).copy(c.from(o));return{start:o.resolveNoCache(t.openStart+n),end:o.resolveNoCache(o.content.size-t.openEnd-n)}}m.size.get=function(){return this.content.size-this.openStart-this.openEnd},v.prototype.insertAt=function(t,e){var n=y(this.content,t+this.openStart,e,null);return n&&new v(n,this.openStart,this.openEnd)},v.prototype.removeBetween=function(t,e){return new v(g(this.content,t+this.openStart,e+this.openStart),this.openStart,this.openEnd)},v.prototype.eq=function(t){return this.content.eq(t.content)&&this.openStart==t.openStart&&this.openEnd==t.openEnd},v.prototype.toString=function(){return this.content+"("+this.openStart+","+this.openEnd+")"},v.prototype.toJSON=function(){if(!this.content.size)return null;var t={content:this.content.toJSON()};return this.openStart>0&&(t.openStart=this.openStart),this.openEnd>0&&(t.openEnd=this.openEnd),t},v.fromJSON=function(t,e){if(!e)return v.empty;var n=e.openStart||0,r=e.openEnd||0;if("number"!=typeof n||"number"!=typeof r)throw new RangeError("Invalid input for Slice.fromJSON");return new v(c.fromJSON(t,e.content),n,r)},v.maxOpen=function(t,e){void 0===e&&(e=!0);for(var n=0,r=0,o=t.firstChild;o&&!o.isLeaf&&(e||!o.type.spec.isolating);o=o.firstChild)n++;for(var i=t.lastChild;i&&!i.isLeaf&&(e||!i.type.spec.isolating);i=i.lastChild)r++;return new v(t,n,r)},Object.defineProperties(v.prototype,m),v.empty=new v(c.empty,0,0);var A=function(t,e,n){this.pos=t,this.path=e,this.depth=e.length/3-1,this.parentOffset=n},T={parent:{configurable:!0},doc:{configurable:!0},textOffset:{configurable:!0},nodeAfter:{configurable:!0},nodeBefore:{configurable:!0}};A.prototype.resolveDepth=function(t){return null==t?this.depth:t<0?this.depth+t:t},T.parent.get=function(){return this.node(this.depth)},T.doc.get=function(){return this.node(0)},A.prototype.node=function(t){return this.path[3*this.resolveDepth(t)]},A.prototype.index=function(t){return this.path[3*this.resolveDepth(t)+1]},A.prototype.indexAfter=function(t){return t=this.resolveDepth(t),this.index(t)+(t!=this.depth||this.textOffset?1:0)},A.prototype.start=function(t){return t=this.resolveDepth(t),0==t?0:this.path[3*t-1]+1},A.prototype.end=function(t){return t=this.resolveDepth(t),this.start(t)+this.node(t).content.size},A.prototype.before=function(t){if(t=this.resolveDepth(t),!t)throw new RangeError("There is no position before the top-level node");return t==this.depth+1?this.pos:this.path[3*t-1]},A.prototype.after=function(t){if(t=this.resolveDepth(t),!t)throw new RangeError("There is no position after the top-level node");return t==this.depth+1?this.pos:this.path[3*t-1]+this.path[3*t].nodeSize},T.textOffset.get=function(){return this.pos-this.path[this.path.length-1]},T.nodeAfter.get=function(){var t=this.parent,e=this.index(this.depth);if(e==t.childCount)return null;var n=this.pos-this.path[this.path.length-1],r=t.child(e);return n?t.child(e).cut(n):r},T.nodeBefore.get=function(){var t=this.index(this.depth),e=this.pos-this.path[this.path.length-1];return e?this.parent.child(t).cut(0,e):0==t?null:this.parent.child(t-1)},A.prototype.posAtIndex=function(t,e){e=this.resolveDepth(e);for(var n=this.path[3*e],r=0==e?0:this.path[3*e-1]+1,o=0;o0;e--)if(this.start(e)<=t&&this.end(e)>=t)return e;return 0},A.prototype.blockRange=function(t,e){if(void 0===t&&(t=this),t.pos=0;n--)if(t.pos<=this.end(n)&&(!e||e(this.node(n))))return new P(this,t,n)},A.prototype.sameParent=function(t){return this.pos-this.parentOffset==t.pos-t.parentOffset},A.prototype.max=function(t){return t.pos>this.pos?t:this},A.prototype.min=function(t){return t.pos=0&&e<=t.content.size))throw new RangeError("Position "+e+" out of range");for(var n=[],r=0,o=e,i=t;;){var a=i.content.findIndex(o),s=a.index,c=a.offset,u=o-c;if(n.push(i,s,r+c),!u)break;if(i=i.child(s),i.isText)break;o=u-1,r+=c+1}return new A(e,n,o)},A.resolveCached=function(t,e){for(var n=0;n<$.length;n++){var r=$[n];if(r.pos==e&&r.doc==t)return r}var o=$[D]=A.resolve(t,e);return D=(D+1)%N,o},Object.defineProperties(A.prototype,T);var $=[],D=0,N=12,P=function(t,e,n){this.$from=t,this.$to=e,this.depth=n},j={start:{configurable:!0},end:{configurable:!0},parent:{configurable:!0},startIndex:{configurable:!0},endIndex:{configurable:!0}};j.start.get=function(){return this.$from.before(this.depth+1)},j.end.get=function(){return this.$to.after(this.depth+1)},j.parent.get=function(){return this.$from.node(this.depth)},j.startIndex.get=function(){return this.$from.index(this.depth)},j.endIndex.get=function(){return this.$to.indexAfter(this.depth)},Object.defineProperties(P.prototype,j);var I=Object.create(null),R=function(t,e,n,r){this.type=t,this.attrs=e,this.content=n||c.empty,this.marks=r||d.none},L={nodeSize:{configurable:!0},childCount:{configurable:!0},textContent:{configurable:!0},firstChild:{configurable:!0},lastChild:{configurable:!0},isBlock:{configurable:!0},isTextblock:{configurable:!0},inlineContent:{configurable:!0},isInline:{configurable:!0},isText:{configurable:!0},isLeaf:{configurable:!0},isAtom:{configurable:!0}};L.nodeSize.get=function(){return this.isLeaf?1:2+this.content.size},L.childCount.get=function(){return this.content.childCount},R.prototype.child=function(t){return this.content.child(t)},R.prototype.maybeChild=function(t){return this.content.maybeChild(t)},R.prototype.forEach=function(t){this.content.forEach(t)},R.prototype.nodesBetween=function(t,e,n,r){void 0===r&&(r=0),this.content.nodesBetween(t,e,n,r,this)},R.prototype.descendants=function(t){this.nodesBetween(0,this.content.size,t)},L.textContent.get=function(){return this.textBetween(0,this.content.size,"")},R.prototype.textBetween=function(t,e,n,r){return this.content.textBetween(t,e,n,r)},L.firstChild.get=function(){return this.content.firstChild},L.lastChild.get=function(){return this.content.lastChild},R.prototype.eq=function(t){return this==t||this.sameMarkup(t)&&this.content.eq(t.content)},R.prototype.sameMarkup=function(t){return this.hasMarkup(t.type,t.attrs,t.marks)},R.prototype.hasMarkup=function(t,e,n){return this.type==t&&p(this.attrs,e||t.defaultAttrs||I)&&d.sameSet(this.marks,n||d.none)},R.prototype.copy=function(t){return void 0===t&&(t=null),t==this.content?this:new this.constructor(this.type,this.attrs,t,this.marks)},R.prototype.mark=function(t){return t==this.marks?this:new this.constructor(this.type,this.attrs,this.content,t)},R.prototype.cut=function(t,e){return 0==t&&e==this.content.size?this:this.copy(this.content.cut(t,e))},R.prototype.slice=function(t,e,n){if(void 0===e&&(e=this.content.size),void 0===n&&(n=!1),t==e)return v.empty;var r=this.resolve(t),o=this.resolve(e),i=n?0:r.sharedDepth(e),a=r.start(i),s=r.node(i),c=s.content.cut(r.pos-a,o.pos-a);return new v(c,r.depth-i,o.depth-i)},R.prototype.replace=function(t,e,n){return b(this.resolve(t),this.resolve(e),n)},R.prototype.nodeAt=function(t){for(var e=this;;){var n=e.content.findIndex(t),r=n.index,o=n.offset;if(e=e.maybeChild(r),!e)return null;if(o==t||e.isText)return e;t-=o+1}},R.prototype.childAfter=function(t){var e=this.content.findIndex(t),n=e.index,r=e.offset;return{node:this.content.maybeChild(n),index:n,offset:r}},R.prototype.childBefore=function(t){if(0==t)return{node:null,index:0,offset:0};var e=this.content.findIndex(t),n=e.index,r=e.offset;if(rt&&this.nodesBetween(t,e,(function(t){return n.isInSet(t.marks)&&(r=!0),!r})),r},L.isBlock.get=function(){return this.type.isBlock},L.isTextblock.get=function(){return this.type.isTextblock},L.inlineContent.get=function(){return this.type.inlineContent},L.isInline.get=function(){return this.type.isInline},L.isText.get=function(){return this.type.isText},L.isLeaf.get=function(){return this.type.isLeaf},L.isAtom.get=function(){return this.type.isAtom},R.prototype.toString=function(){if(this.type.spec.toDebugString)return this.type.spec.toDebugString(this);var t=this.type.name;return this.content.size&&(t+="("+this.content.toStringInner()+")"),F(this.marks,t)},R.prototype.contentMatchAt=function(t){var e=this.type.contentMatch.matchFragment(this.content,0,t);if(!e)throw new Error("Called contentMatchAt on a node with invalid content");return e},R.prototype.canReplace=function(t,e,n,r,o){void 0===n&&(n=c.empty),void 0===r&&(r=0),void 0===o&&(o=n.childCount);var i=this.contentMatchAt(t).matchFragment(n,r,o),a=i&&i.matchFragment(this.content,e);if(!a||!a.validEnd)return!1;for(var s=r;s=0;n--)e=t[n].type.name+"("+e+")";return e}var B=function(t){this.validEnd=t,this.next=[],this.wrapCache=[]},V={inlineContent:{configurable:!0},defaultType:{configurable:!0},edgeCount:{configurable:!0}};B.parse=function(t,e){var n=new q(t,e);if(null==n.next)return B.empty;var r=W(n);n.next&&n.err("Unexpected trailing text");var o=et(Z(r));return nt(o,n),o},B.prototype.matchType=function(t){for(var e=0;e>1},B.prototype.edge=function(t){var e=t<<1;if(e>=this.next.length)throw new RangeError("There's no "+t+"th edge in this content match");return{type:this.next[e],next:this.next[e+1]}},B.prototype.toString=function(){var t=[];function e(n){t.push(n);for(var r=1;r"+t.indexOf(e.next[o+1]);return r})).join("\n")},Object.defineProperties(B.prototype,V),B.empty=new B(!0);var q=function(t,e){this.string=t,this.nodeTypes=e,this.inline=null,this.pos=0,this.tokens=t.split(/\s*(?=\b|\W|$)/),""==this.tokens[this.tokens.length-1]&&this.tokens.pop(),""==this.tokens[0]&&this.tokens.unshift()},H={next:{configurable:!0}};function W(t){var e=[];do{e.push(U(t))}while(t.eat("|"));return 1==e.length?e[0]:{type:"choice",exprs:e}}function U(t){var e=[];do{e.push(K(t))}while(t.next&&")"!=t.next&&"|"!=t.next);return 1==e.length?e[0]:{type:"seq",exprs:e}}function K(t){for(var e=X(t);;)if(t.eat("+"))e={type:"plus",expr:e};else if(t.eat("*"))e={type:"star",expr:e};else if(t.eat("?"))e={type:"opt",expr:e};else{if(!t.eat("{"))break;e=Y(t,e)}return e}function J(t){/\D/.test(t.next)&&t.err("Expected number, got '"+t.next+"'");var e=Number(t.next);return t.pos++,e}function Y(t,e){var n=J(t),r=n;return t.eat(",")&&(r="}"!=t.next?J(t):-1),t.eat("}")||t.err("Unclosed braced range"),{type:"range",min:n,max:r,expr:e}}function G(t,e){var n=t.nodeTypes,r=n[e];if(r)return[r];var o=[];for(var i in n){var a=n[i];a.groups.indexOf(e)>-1&&o.push(a)}return 0==o.length&&t.err("No node type or group '"+e+"' found"),o}function X(t){if(t.eat("(")){var e=W(t);return t.eat(")")||t.err("Missing closing paren"),e}if(!/\W/.test(t.next)){var n=G(t,t.next).map((function(e){return null==t.inline?t.inline=e.isInline:t.inline!=e.isInline&&t.err("Mixing inline and block content"),{type:"name",value:e}}));return t.pos++,1==n.length?n[0]:{type:"choice",exprs:n}}t.err("Unexpected token '"+t.next+"'")}function Z(t){var e=[[]];return o(i(t,0),n()),e;function n(){return e.push([])-1}function r(t,n,r){var o={term:r,to:n};return e[t].push(o),o}function o(t,e){t.forEach((function(t){return t.to=e}))}function i(t,e){if("choice"==t.type)return t.exprs.reduce((function(t,n){return t.concat(i(n,e))}),[]);if("seq"==t.type)for(var a=0;;a++){var s=i(t.exprs[a],e);if(a==t.exprs.length-1)return s;o(s,e=n())}else{if("star"==t.type){var c=n();return r(e,c),o(i(t.expr,c),c),[r(c)]}if("plus"==t.type){var u=n();return o(i(t.expr,e),u),o(i(t.expr,u),u),[r(u)]}if("opt"==t.type)return[r(e)].concat(i(t.expr,e));if("range"==t.type){for(var l=e,f=0;f-1&&o[i+1];tt(t,r).forEach((function(t){a||o.push(n,a=[]),-1==a.indexOf(t)&&a.push(t)}))}}))}));for(var i=e[r.join(",")]=new B(r.indexOf(t.length-1)>-1),a=0;a-1},at.prototype.allowsMarks=function(t){if(null==this.markSet)return!0;for(var e=0;e-1};var ft=function(t){for(var e in this.spec={},t)this.spec[e]=t[e];this.spec.nodes=i.from(t.nodes),this.spec.marks=i.from(t.marks),this.nodes=at.compile(this.spec.nodes,this),this.marks=lt.compile(this.spec.marks,this);var n=Object.create(null);for(var r in this.nodes){if(r in this.marks)throw new RangeError(r+" can not be both a node and a mark");var o=this.nodes[r],a=o.spec.content||"",s=o.spec.marks;o.contentMatch=n[a]||(n[a]=B.parse(a,this.nodes)),o.inlineContent=o.contentMatch.inlineContent,o.markSet="_"==s?null:s?pt(this,s.split(" ")):""!=s&&o.inlineContent?null:[]}for(var c in this.marks){var u=this.marks[c],l=u.spec.excludes;u.excluded=null==l?[u]:""==l?[]:pt(this,l.split(" "))}this.nodeFromJSON=this.nodeFromJSON.bind(this),this.markFromJSON=this.markFromJSON.bind(this),this.topNodeType=this.nodes[this.spec.topNode||"doc"],this.cached=Object.create(null),this.cached.wrappings=Object.create(null)};function pt(t,e){for(var n=[],r=0;r-1)&&n.push(a=c)}if(!a)throw new SyntaxError("Unknown mark type: '"+e[r]+"'")}return n}ft.prototype.node=function(t,e,n,r){if("string"==typeof t)t=this.nodeType(t);else{if(!(t instanceof at))throw new RangeError("Invalid node type: "+t);if(t.schema!=this)throw new RangeError("Node type from different schema used ("+t.name+")")}return t.createChecked(e,n,r)},ft.prototype.text=function(t,e){var n=this.nodes.text;return new z(n,n.defaultAttrs,t,d.setFrom(e))},ft.prototype.mark=function(t,e){return"string"==typeof t&&(t=this.marks[t]),t.create(e)},ft.prototype.nodeFromJSON=function(t){return R.fromJSON(this,t)},ft.prototype.markFromJSON=function(t){return d.fromJSON(this,t)},ft.prototype.nodeType=function(t){var e=this.nodes[t];if(!e)throw new RangeError("Unknown node type: "+t);return e};var dt=function(t,e){var n=this;this.schema=t,this.rules=e,this.tags=[],this.styles=[],e.forEach((function(t){t.tag?n.tags.push(t):t.style&&n.styles.push(t)})),this.normalizeLists=!this.tags.some((function(e){if(!/^(ul|ol)\b/.test(e.tag)||!e.node)return!1;var n=t.nodes[e.node];return n.contentMatch.matchType(n)}))};dt.prototype.parse=function(t,e){void 0===e&&(e={});var n=new St(this,e,!1);return n.addAll(t,null,e.from,e.to),n.finish()},dt.prototype.parseSlice=function(t,e){void 0===e&&(e={});var n=new St(this,e,!0);return n.addAll(t,null,e.from,e.to),v.maxOpen(n.finish())},dt.prototype.matchTag=function(t,e){for(var n=0;nt.length&&(61!=o.style.charCodeAt(t.length)||o.style.slice(t.length+1)!=e))){if(o.getAttrs){var i=o.getAttrs(e);if(!1===i)continue;o.attrs=i}return o}}},dt.schemaRules=function(t){var e=[];function n(t){for(var n=null==t.priority?50:t.priority,r=0;r=0;e--)if(this.stashMarks[e].type==t)return this.stashMarks.splice(e,1)[0]},xt.prototype.applyPending=function(t){for(var e=0,n=this.pendingMarks;e=0;r--){var o=this.nodes[r],i=o.findWrapping(t);if(i&&(!e||e.length>i.length)&&(e=i,n=o,!i.length))break;if(o.solid)break}if(!e)return!1;this.sync(n);for(var a=0;athis.open){for(;e>this.open;e--)this.nodes[e-1].content.push(this.nodes[e].finish(t));this.nodes.length=this.open+1}},St.prototype.finish=function(){return this.open=0,this.closeExtra(this.isOpen),this.nodes[0].finish(this.isOpen||this.options.topOpen)},St.prototype.sync=function(t){for(var e=this.open;e>=0;e--)if(this.nodes[e]==t)return void(this.open=e)},Ot.currentPos.get=function(){this.closeExtra();for(var t=0,e=this.open;e>=0;e--){for(var n=this.nodes[e].content,r=n.length-1;r>=0;r--)t+=n[r].nodeSize;e&&t++}return t},St.prototype.findAtPoint=function(t,e){if(this.find)for(var n=0;n-1)return t.split(/\s*\|\s*/).some(this.matchesContext,this);var n=t.split("/"),r=this.options.context,o=!this.isOpen&&(!r||r.parent.type==this.nodes[0].type),i=-(r?r.depth+1:0)+(o?0:1),a=function(t,s){for(;t>=0;t--){var c=n[t];if(""==c){if(t==n.length-1||0==t)continue;for(;s>=i;s--)if(a(t-1,s))return!0;return!1}var u=s>0||0==s&&o?e.nodes[s].type:r&&s>=i?r.node(s-i).type:null;if(!u||u.name!=c&&-1==u.groups.indexOf(c))return!1;s--}return!0};return a(n.length-1,this.open)},St.prototype.textblockFromContext=function(){var t=this.options.context;if(t)for(var e=t.depth;e>=0;e--){var n=t.node(e).contentMatchAt(t.indexAfter(e)).defaultType;if(n&&n.isTextblock&&n.defaultAttrs)return n}for(var r in this.parser.schema.nodes){var o=this.parser.schema.nodes[r];if(o.isTextblock&&o.defaultAttrs)return o}},St.prototype.addPendingMark=function(t){var e=At(t,this.top.pendingMarks);e&&this.top.stashMarks.push(e),this.top.pendingMarks=t.addToSet(this.top.pendingMarks)},St.prototype.removePendingMark=function(t,e){for(var n=this.open;n>=0;n--){var r=this.nodes[n],o=r.pendingMarks.lastIndexOf(t);if(o>-1)r.pendingMarks=t.removeFromSet(r.pendingMarks);else{r.activeMarks=t.removeFromSet(r.activeMarks);var i=r.popFromStashMark(t.type);i&&(r.activeMarks=i.addToSet(r.activeMarks))}if(r==e)break}},Object.defineProperties(St.prototype,Ot);var Tt=function(t,e){this.nodes=t||{},this.marks=e||{}};function $t(t){var e={};for(var n in t){var r=t[n].spec.toDOM;r&&(e[n]=r)}return e}function Dt(t){return t.document||window.document}Tt.prototype.serializeFragment=function(t,e,n){var r=this;void 0===e&&(e={}),n||(n=Dt(e).createDocumentFragment());var o=n,i=null;return t.forEach((function(t){if(i||t.marks.length){i||(i=[]);var n=0,a=0;while(n=0;r--){var o=this.serializeMark(t.marks[r],t.isInline,e);o&&((o.contentDOM||o.dom).appendChild(n),n=o.dom)}return n},Tt.prototype.serializeMark=function(t,e,n){void 0===n&&(n={});var r=this.marks[t.type.name];return r&&Tt.renderSpec(Dt(n),r(t,e))},Tt.renderSpec=function(t,e,n){if(void 0===n&&(n=null),"string"==typeof e)return{dom:t.createTextNode(e)};if(null!=e.nodeType)return{dom:e};if(e.dom&&null!=e.dom.nodeType)return e;var r=e[0],o=r.indexOf(" ");o>0&&(n=r.slice(0,o),r=r.slice(o+1));var i=null,a=n?t.createElementNS(n,r):t.createElement(r),s=e[1],c=1;if(s&&"object"==typeof s&&null==s.nodeType&&!Array.isArray(s))for(var u in c=2,s)if(null!=s[u]){var l=u.indexOf(" ");l>0?a.setAttributeNS(u.slice(0,l),u.slice(l+1),s[u]):a.setAttribute(u,s[u])}for(var f=c;fc)throw new RangeError("Content hole must be the only child of its parent node");return{dom:a,contentDOM:a}}var d=Tt.renderSpec(t,p,n),h=d.dom,v=d.contentDOM;if(a.appendChild(h),v){if(i)throw new RangeError("Multiple content holes");i=v}}return{dom:a,contentDOM:i}},Tt.fromSchema=function(t){return t.cached.domSerializer||(t.cached.domSerializer=new Tt(this.nodesFromSchema(t),this.marksFromSchema(t)))},Tt.nodesFromSchema=function(t){var e=$t(t.nodes);return e.text||(e.text=function(t){return t.text}),e},Tt.marksFromSchema=function(t){return $t(t.marks)}},3360:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var r=n("78ef"),o=function(){for(var t=arguments.length,e=new Array(t),n=0;n0&&e.reduce((function(e,n){return e&&n.apply(t,r)}),!0)}))};e.default=o},"342f":function(t,e,n){var r=n("d066");t.exports=r("navigator","userAgent")||""},"3a54":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var r=n("78ef"),o=(0,r.regex)("alphaNum",/^[a-zA-Z0-9]*$/);e.default=o},"428f":function(t,e,n){var r=n("da84");t.exports=r},"44ad":function(t,e,n){var r=n("d039"),o=n("c6b6"),i="".split;t.exports=r((function(){return!Object("z").propertyIsEnumerable(0)}))?function(t){return"String"==o(t)?i.call(t,""):Object(t)}:Object},"45b8":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var r=n("78ef"),o=(0,r.regex)("numeric",/^[0-9]*$/);e.default=o},"46bc":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var r=n("78ef"),o=function(t){return(0,r.withParams)({type:"maxValue",max:t},(function(e){return!(0,r.req)(e)||(!/\s/.test(e)||e instanceof Date)&&+e<=+t}))};e.default=o},4930:function(t,e,n){var r=n("d039");t.exports=!!Object.getOwnPropertySymbols&&!r((function(){return!String(Symbol())}))},"4d64":function(t,e,n){var r=n("fc6a"),o=n("50c4"),i=n("23cb"),a=function(t){return function(e,n,a){var s,c=r(e),u=o(c.length),l=i(a,u);if(t&&n!=n){while(u>l)if(s=c[l++],s!=s)return!0}else for(;u>l;l++)if((t||l in c)&&c[l]===n)return t||l||0;return!t&&-1}};t.exports={includes:a(!0),indexOf:a(!1)}},"50c4":function(t,e,n){var r=n("a691"),o=Math.min;t.exports=function(t){return t>0?o(r(t),9007199254740991):0}},5135:function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},5313:function(t,e,n){"use strict";n.d(e,"a",(function(){return d})),n.d(e,"b",(function(){return k})),n.d(e,"c",(function(){return f})),n.d(e,"d",(function(){return A})),n.d(e,"e",(function(){return D})),n.d(e,"f",(function(){return a})),n.d(e,"g",(function(){return u}));var r=n("304a"),o=n("0ac0"),i=Object.create(null),a=function(t,e,n){this.ranges=n||[new c(t.min(e),t.max(e))],this.$anchor=t,this.$head=e},s={anchor:{configurable:!0},head:{configurable:!0},from:{configurable:!0},to:{configurable:!0},$from:{configurable:!0},$to:{configurable:!0},empty:{configurable:!0}};s.anchor.get=function(){return this.$anchor.pos},s.head.get=function(){return this.$head.pos},s.from.get=function(){return this.$from.pos},s.to.get=function(){return this.$to.pos},s.$from.get=function(){return this.ranges[0].$from},s.$to.get=function(){return this.ranges[0].$to},s.empty.get=function(){for(var t=this.ranges,e=0;e=0;o--){var i=e<0?v(t.node(0),t.node(o),t.before(o+1),t.index(o),e,n):v(t.node(0),t.node(o),t.after(o+1),t.index(o)+1,e,n);if(i)return i}},a.near=function(t,e){return void 0===e&&(e=1),this.findFrom(t,e)||this.findFrom(t,-e)||new d(t.node(0))},a.atStart=function(t){return v(t,t,0,0,1)||new d(t)},a.atEnd=function(t){return v(t,t,t.content.size,t.childCount,-1)||new d(t)},a.fromJSON=function(t,e){if(!e||!e.type)throw new RangeError("Invalid input for Selection.fromJSON");var n=i[e.type];if(!n)throw new RangeError("No selection type "+e.type+" defined");return n.fromJSON(t,e)},a.jsonID=function(t,e){if(t in i)throw new RangeError("Duplicate use of selection JSON ID "+t);return i[t]=e,e.prototype.jsonID=t,e},a.prototype.getBookmark=function(){return u.between(this.$anchor,this.$head).getBookmark()},Object.defineProperties(a.prototype,s),a.prototype.visible=!0;var c=function(t,e){this.$from=t,this.$to=e},u=function(t){function e(e,n){void 0===n&&(n=e),t.call(this,e,n)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var n={$cursor:{configurable:!0}};return n.$cursor.get=function(){return this.$anchor.pos==this.$head.pos?this.$head:null},e.prototype.map=function(n,r){var o=n.resolve(r.map(this.head));if(!o.parent.inlineContent)return t.near(o);var i=n.resolve(r.map(this.anchor));return new e(i.parent.inlineContent?i:o,o)},e.prototype.replace=function(e,n){if(void 0===n&&(n=r["j"].empty),t.prototype.replace.call(this,e,n),n==r["j"].empty){var o=this.$from.marksAcross(this.$to);o&&e.ensureMarks(o)}},e.prototype.eq=function(t){return t instanceof e&&t.anchor==this.anchor&&t.head==this.head},e.prototype.getBookmark=function(){return new l(this.anchor,this.head)},e.prototype.toJSON=function(){return{type:"text",anchor:this.anchor,head:this.head}},e.fromJSON=function(t,n){if("number"!=typeof n.anchor||"number"!=typeof n.head)throw new RangeError("Invalid input for TextSelection.fromJSON");return new e(t.resolve(n.anchor),t.resolve(n.head))},e.create=function(t,e,n){void 0===n&&(n=e);var r=t.resolve(e);return new this(r,n==e?r:t.resolve(n))},e.between=function(n,r,o){var i=n.pos-r.pos;if(o&&!i||(o=i>=0?1:-1),!r.parent.inlineContent){var a=t.findFrom(r,o,!0)||t.findFrom(r,-o,!0);if(!a)return t.near(r,o);r=a.$head}return n.parent.inlineContent||(0==i?n=r:(n=(t.findFrom(n,-o,!0)||t.findFrom(n,o,!0)).$anchor,n.pos0?0:1);o>0?a=0;a+=o){var s=e.child(a);if(s.isAtom){if(!i&&f.isSelectable(s))return f.create(t,n-(o<0?s.nodeSize:0))}else{var c=v(t,s,n+o,o<0?s.childCount:0,o,i);if(c)return c}n+=s.nodeSize*o}}function m(t,e,n){var r=t.steps.length-1;if(!(r0},e.prototype.setStoredMarks=function(t){return this.storedMarks=t,this.updated|=y,this},e.prototype.ensureMarks=function(t){return r["d"].sameSet(this.storedMarks||this.selection.$from.marks(),t)||this.setStoredMarks(t),this},e.prototype.addStoredMark=function(t){return this.ensureMarks(t.addToSet(this.storedMarks||this.selection.$head.marks()))},e.prototype.removeStoredMark=function(t){return this.ensureMarks(t.removeFromSet(this.storedMarks||this.selection.$head.marks()))},n.storedMarksSet.get=function(){return(this.updated&y)>0},e.prototype.addStep=function(e,n){t.prototype.addStep.call(this,e,n),this.updated=this.updated&~y,this.storedMarks=null},e.prototype.setTime=function(t){return this.time=t,this},e.prototype.replaceSelection=function(t){return this.selection.replace(this,t),this},e.prototype.replaceSelectionWith=function(t,e){var n=this.selection;return!1!==e&&(t=t.mark(this.storedMarks||(n.empty?n.$from.marks():n.$from.marksAcross(n.$to)||r["d"].none))),n.replaceWith(this,t),this},e.prototype.deleteSelection=function(){return this.selection.replace(this),this},e.prototype.insertText=function(t,e,n){void 0===n&&(n=e);var r=this.doc.type.schema;if(null==e)return t?this.replaceSelectionWith(r.text(t),!0):this.deleteSelection();if(!t)return this.deleteRange(e,n);var o=this.storedMarks;if(!o){var i=this.doc.resolve(e);o=n==e?i.marks():i.marksAcross(this.doc.resolve(n))}return this.replaceRangeWith(e,n,r.text(t,o)),this.selection.empty||this.setSelection(a.near(this.selection.$to)),this},e.prototype.setMeta=function(t,e){return this.meta["string"==typeof t?t:t.key]=e,this},e.prototype.getMeta=function(t){return this.meta["string"==typeof t?t:t.key]},n.isGeneric.get=function(){for(var t in this.meta)return!1;return!0},e.prototype.scrollIntoView=function(){return this.updated|=b,this},n.scrolledIntoView.get=function(){return(this.updated&b)>0},Object.defineProperties(e.prototype,n),e}(o["d"]);function x(t,e){return e&&t?t.bind(e):t}var S=function(t,e,n){this.name=t,this.init=x(e.init,n),this.apply=x(e.apply,n)},O=[new S("doc",{init:function(t){return t.doc||t.schema.topNodeType.createAndFill()},apply:function(t){return t.doc}}),new S("selection",{init:function(t,e){return t.selection||a.atStart(e.doc)},apply:function(t){return t.selection}}),new S("storedMarks",{init:function(t){return t.storedMarks||null},apply:function(t,e,n,r){return r.selection.$cursor?t.storedMarks:null}}),new S("scrollToSelection",{init:function(){return 0},apply:function(t,e){return t.scrolledIntoView?e+1:e}})],_=function(t,e){var n=this;this.schema=t,this.fields=O.concat(),this.plugins=[],this.pluginsByKey=Object.create(null),e&&e.forEach((function(t){if(n.pluginsByKey[t.key])throw new RangeError("Adding different instances of a keyed plugin ("+t.key+")");n.plugins.push(t),n.pluginsByKey[t.key]=t,t.spec.state&&n.fields.push(new S(t.key,t.spec.state,t))}))},k=function(t){this.config=t},C={schema:{configurable:!0},plugins:{configurable:!0},tr:{configurable:!0}};C.schema.get=function(){return this.config.schema},C.plugins.get=function(){return this.config.plugins},k.prototype.apply=function(t){return this.applyTransaction(t).state},k.prototype.filterTransaction=function(t,e){void 0===e&&(e=-1);for(var n=0;n-1&&M.splice(e,1)},Object.defineProperties(k.prototype,C);var M=[];function E(t,e,n){for(var r in t){var o=t[r];o instanceof Function?o=o.bind(e):"handleDOMEvents"==r&&(o=E(o,e,{})),n[r]=o}return n}var A=function(t){this.props={},t.props&&E(t.props,this,this.props),this.spec=t,this.key=t.key?t.key.key:$("plugin")};A.prototype.getState=function(t){return t[this.key]};var T=Object.create(null);function $(t){return t in T?t+"$"+ ++T[t]:(T[t]=0,t+"$")}var D=function(t){void 0===t&&(t="key"),this.key=$(t)};D.prototype.get=function(t){return t.config.pluginsByKey[this.key]},D.prototype.getState=function(t){return t[this.key]}},5319:function(t,e,n){"use strict";var r=n("d784"),o=n("825a"),i=n("7b0b"),a=n("50c4"),s=n("a691"),c=n("1d80"),u=n("8aa5"),l=n("14c3"),f=Math.max,p=Math.min,d=Math.floor,h=/\$([$&'`]|\d\d?|<[^>]*>)/g,v=/\$([$&'`]|\d\d?)/g,m=function(t){return void 0===t?t:String(t)};r("replace",2,(function(t,e,n,r){var g=r.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,y=r.REPLACE_KEEPS_$0,b=g?"$":"$0";return[function(n,r){var o=c(this),i=void 0==n?void 0:n[t];return void 0!==i?i.call(n,o,r):e.call(String(o),n,r)},function(t,r){if(!g&&y||"string"===typeof r&&-1===r.indexOf(b)){var i=n(e,t,this,r);if(i.done)return i.value}var c=o(t),d=String(this),h="function"===typeof r;h||(r=String(r));var v=c.global;if(v){var x=c.unicode;c.lastIndex=0}var S=[];while(1){var O=l(c,d);if(null===O)break;if(S.push(O),!v)break;var _=String(O[0]);""===_&&(c.lastIndex=u(d,a(c.lastIndex),x))}for(var k="",C=0,M=0;M=C&&(k+=d.slice(C,A)+P,C=A+E.length)}return k+d.slice(C)}];function w(t,n,r,o,a,s){var c=r+t.length,u=o.length,l=v;return void 0!==a&&(a=i(a),l=h),e.call(s,l,(function(e,i){var s;switch(i.charAt(0)){case"$":return"$";case"&":return t;case"`":return n.slice(0,r);case"'":return n.slice(c);case"<":s=a[i.slice(1,-1)];break;default:var l=+i;if(0===l)return e;if(l>u){var f=d(l/10);return 0===f?e:f<=u?void 0===o[f-1]?i.charAt(1):o[f-1]+i.charAt(1):e}s=o[l-1]}return void 0===s?"":s}))}}))},5692:function(t,e,n){var r=n("c430"),o=n("c6cd");(t.exports=function(t,e){return o[t]||(o[t]=void 0!==e?e:{})})("versions",[]).push({version:"3.7.0",mode:r?"pure":"global",copyright:"© 2020 Denis Pushkarev (zloirock.ru)"})},"56ef":function(t,e,n){var r=n("d066"),o=n("241c"),i=n("7418"),a=n("825a");t.exports=r("Reflect","ownKeys")||function(t){var e=o.f(a(t)),n=i.f;return n?e.concat(n(t)):e}},"576a":function(t,e,n){"use strict";n.d(e,"a",(function(){return Ln}));var r=n("5313"),o=n("304a"),i=n("0ac0"),a={};if("undefined"!=typeof navigator&&"undefined"!=typeof document){var s=/Edge\/(\d+)/.exec(navigator.userAgent),c=/MSIE \d/.test(navigator.userAgent),u=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent);a.mac=/Mac/.test(navigator.platform);var l=a.ie=!!(c||u||s);a.ie_version=c?document.documentMode||6:u?+u[1]:s?+s[1]:null,a.gecko=!l&&/gecko\/(\d+)/i.test(navigator.userAgent),a.gecko_version=a.gecko&&+(/Firefox\/(\d+)/.exec(navigator.userAgent)||[0,0])[1];var f=!l&&/Chrome\/(\d+)/.exec(navigator.userAgent);a.chrome=!!f,a.chrome_version=f&&+f[1],a.ios=!l&&/AppleWebKit/.test(navigator.userAgent)&&/Mobile\/\w+/.test(navigator.userAgent),a.android=/Android \d/.test(navigator.userAgent),a.webkit="webkitFontSmoothing"in document.documentElement.style,a.safari=/Apple Computer/.test(navigator.vendor),a.webkit_version=a.webkit&&+(/\bAppleWebKit\/(\d+)/.exec(navigator.userAgent)||[0,0])[1]}var p=function(t){for(var e=0;;e++)if(t=t.previousSibling,!t)return e},d=function(t){var e=t.parentNode;return e&&11==e.nodeType?e.host:e},h=null,v=function(t,e,n){var r=h||(h=document.createRange());return r.setEnd(t,null==n?t.nodeValue.length:n),r.setStart(t,e||0),r},m=function(t,e,n,r){return n&&(y(t,e,n,r,-1)||y(t,e,n,r,1))},g=/^(img|br|input|textarea|hr)$/i;function y(t,e,n,r,o){for(;;){if(t==n&&e==r)return!0;if(e==(o<0?0:b(t))){var i=t.parentNode;if(1!=i.nodeType||x(t)||g.test(t.nodeName)||"false"==t.contentEditable)return!1;e=p(t)+(o<0?0:1),t=i}else{if(1!=t.nodeType)return!1;if(t=t.childNodes[e+(o<0?-1:0)],"false"==t.contentEditable)return!1;e=o<0?b(t):0}}}function b(t){return 3==t.nodeType?t.nodeValue.length:t.childNodes.length}function w(t,e,n){for(var r=0==e,o=e==b(t);r||o;){if(t==n)return!0;var i=p(t);if(t=t.parentNode,!t)return!1;r=r&&0==i,o=o&&i==b(t)}}function x(t){for(var e,n=t;n;n=n.parentNode)if(e=n.pmViewDesc)break;return e&&e.node&&e.node.isBlock&&(e.dom==t||e.contentDOM==t)}var S=function(t){var e=t.isCollapsed;return e&&a.chrome&&t.rangeCount&&!t.getRangeAt(0).collapsed&&(e=!1),e};function O(t,e){var n=document.createEvent("Event");return n.initEvent("keydown",!0,!0),n.keyCode=t,n.key=n.code=e,n}function _(t){return{left:0,right:t.documentElement.clientWidth,top:0,bottom:t.documentElement.clientHeight}}function k(t,e){return"number"==typeof t?t:t[e]}function C(t){var e=t.getBoundingClientRect();return{left:e.left,right:e.left+t.clientWidth,top:e.top,bottom:e.top+t.clientHeight}}function M(t,e,n){for(var r=t.someProp("scrollThreshold")||0,o=t.someProp("scrollMargin")||5,i=t.dom.ownerDocument,a=n||t.dom;;a=d(a)){if(!a)break;if(1==a.nodeType){var s=a==i.body||1!=a.nodeType,c=s?_(i):C(a),u=0,l=0;if(e.topc.bottom-k(r,"bottom")&&(l=e.bottom-c.bottom+k(o,"bottom")),e.leftc.right-k(r,"right")&&(u=e.right-c.right+k(o,"right")),u||l)if(s)i.defaultView.scrollBy(u,l);else{var f=a.scrollLeft,p=a.scrollTop;l&&(a.scrollTop+=l),u&&(a.scrollLeft+=u);var h=a.scrollLeft-f,v=a.scrollTop-p;e={left:e.left-h,top:e.top-v,right:e.right-h,bottom:e.bottom-v}}if(s)break}}}function E(t){for(var e,n,r=t.dom.getBoundingClientRect(),o=Math.max(0,r.top),i=(r.left+r.right)/2,a=o+1;a=o-20){e=s,n=c.top;break}}}return{refDOM:e,refTop:n,stack:A(t.dom)}}function A(t){for(var e=[],n=t.ownerDocument;t;t=d(t))if(e.push({dom:t,top:t.scrollTop,left:t.scrollLeft}),t==n)break;return e}function T(t){var e=t.refDOM,n=t.refTop,r=t.stack,o=e?e.getBoundingClientRect().top:0;$(r,0==o?0:o-n)}function $(t,e){for(var n=0;n=s){a=Math.max(p.bottom,a),s=Math.min(p.top,s);var d=p.left>e.left?p.left-e.left:p.right=(p.left+p.right)/2?1:0));continue}}!n&&(e.left>=p.right&&e.top>=p.top||e.left>=p.left&&e.top>=p.bottom)&&(i=u+1)}}return n&&3==n.nodeType?j(n,r):!n||o&&1==n.nodeType?{node:t,offset:i}:P(n,r)}function j(t,e){for(var n=t.nodeValue.length,r=document.createRange(),o=0;o=(i.left+i.right)/2?1:0)}}return{node:t,offset:0}}function I(t,e){return t.left>=e.left-1&&t.left<=e.right+1&&t.top>=e.top-1&&t.top<=e.bottom+1}function R(t,e){var n=t.parentNode;return n&&/^li$/i.test(n.nodeName)&&e.left(s.left+s.right)/2?1:-1}return t.docView.posFromDOM(o,i,a)}function z(t,e,n,r){for(var o=-1,i=e;;){if(i==t.dom)break;var a=t.docView.nearestDesc(i,!0);if(!a)return null;if(a.node.isBlock&&a.parent){var s=a.dom.getBoundingClientRect();if(s.left>r.left||s.top>r.top)o=a.posBefore;else{if(!(s.right-1?o:t.docView.posFromDOM(e,n)}function F(t,e,n){var r=t.childNodes.length;if(r&&n.tope.top&&i++}o==t.dom&&i==o.childNodes.length-1&&1==o.lastChild.nodeType&&e.top>o.lastChild.getBoundingClientRect().bottom?l=t.state.doc.content.size:0!=i&&1==o.nodeType&&"BR"==o.childNodes[i-1].nodeName||(l=z(t,o,i,e))}null==l&&(l=L(t,f,e));var v=t.docView.nearestDesc(f,!0);return{pos:l,inside:v?v.posAtStart-v.border:-1}}function V(t,e){var n=t.getClientRects();return n.length?n[e<0?0:n.length-1]:t.getBoundingClientRect()}var q=/[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/;function H(t,e,n){var r=t.docView.domFromPos(e),o=r.node,i=r.offset,s=t.state.doc.resolve(e),c=s.parent.inlineContent,u=a.webkit||a.gecko;if(3==o.nodeType&&u&&q.test(o.nodeValue)){var l=V(v(o,i,i),n);if(a.gecko&&i&&/\s/.test(o.nodeValue[i-1])&&i=0&&i==b(o)&&o!=h)i=p(o)+1,o=o.parentNode}if(3==o.nodeType)return n<0?W(V(v(o,i-1,i),1),!1):W(V(v(o,i,i+1),-1),!0);if(!c){if(i&&(n<0||i==b(o))){var m=o.childNodes[i-1];if(1==m.nodeType)return U(m.getBoundingClientRect(),!1)}if(i=0)}if(i&&(n<0||i==b(o))){var y=o.childNodes[i-1],w=3==y.nodeType?v(y,b(y)-(u?0:1)):1==y.nodeType&&"BR"!=y.nodeName?y:null;if(w)return W(V(w,1),!1)}if(i=0)}function W(t,e){if(0==t.width)return t;var n=e?t.left:t.right;return{top:t.top,bottom:t.bottom,left:n,right:n}}function U(t,e){if(0==t.height)return t;var n=e?t.top:t.bottom;return{top:n,bottom:n,left:t.left,right:t.right}}function K(t,e,n){var r=t.state,o=t.root.activeElement;r!=e&&t.updateState(e),o!=t.dom&&t.focus();try{return n()}finally{r!=e&&t.updateState(r),o!=t.dom&&o&&o.focus()}}function J(t,e,n){var r=e.selection,o="up"==n?r.$anchor.min(r.$head):r.$anchor.max(r.$head);return K(t,e,(function(){for(var e=t.docView.domFromPos(o.pos),r=e.node;;){var i=t.docView.nearestDesc(r,!0);if(!i)break;if(i.node.isBlock){r=i.dom;break}r=i.dom.parentNode}for(var a=H(t,o.pos,1),s=r.firstChild;s;s=s.nextSibling){var c=void 0;if(1==s.nodeType)c=s.getClientRects();else{if(3!=s.nodeType)continue;c=v(s,0,s.nodeValue.length).getClientRects()}for(var u=0;ul.top&&("up"==n?l.bottoma.bottom-1))return!1}}return!0}))}var Y=/[\u0590-\u08ac]/;function G(t,e,n){var r=e.selection,o=r.$head;if(!o.parent.isTextblock)return!1;var i=o.parentOffset,a=!i,s=i==o.parent.content.size,c=getSelection();return Y.test(o.parent.textContent)&&c.modify?K(t,e,(function(){var e=c.getRangeAt(0),r=c.focusNode,i=c.focusOffset,a=c.caretBidiLevel;c.modify("move",n,"character");var s=o.depth?t.docView.domAfterPos(o.before()):t.dom,u=!s.contains(1==c.focusNode.nodeType?c.focusNode:c.focusNode.parentNode)||r==c.focusNode&&i==c.focusOffset;return c.removeAllRanges(),c.addRange(e),null!=a&&(c.caretBidiLevel=a),u})):"left"==n||"backward"==n?a:s}var X=null,Z=null,Q=!1;function tt(t,e,n){return X==e&&Z==n?Q:(X=e,Z=n,Q="up"==n||"down"==n?J(t,e,n):G(t,e,n))}var et=0,nt=1,rt=2,ot=3,it=function(t,e,n,r){this.parent=t,this.children=e,this.dom=n,n.pmViewDesc=this,this.contentDOM=r,this.dirty=et},at={beforePosition:{configurable:!0},size:{configurable:!0},border:{configurable:!0},posBefore:{configurable:!0},posAtStart:{configurable:!0},posAfter:{configurable:!0},posAtEnd:{configurable:!0},contentLost:{configurable:!0}};it.prototype.matchesWidget=function(){return!1},it.prototype.matchesMark=function(){return!1},it.prototype.matchesNode=function(){return!1},it.prototype.matchesHack=function(){return!1},at.beforePosition.get=function(){return!1},it.prototype.parseRule=function(){return null},it.prototype.stopEvent=function(){return!1},at.size.get=function(){for(var t=0,e=0;e0:s)?this.posAtEnd:this.posAtStart},it.prototype.nearestDesc=function(t,e){for(var n=!0,r=t;r;r=r.parentNode){var o=this.getDesc(r);if(o&&(!e||o.node)){if(!n||!o.nodeDOM||(1==o.nodeDOM.nodeType?o.nodeDOM.contains(1==t.nodeType?t:t.parentNode):o.nodeDOM==t))return o;n=!1}}},it.prototype.getDesc=function(t){for(var e=t.pmViewDesc,n=e;n;n=n.parent)if(n==this)return e},it.prototype.posFromDOM=function(t,e,n){for(var r=t;r;r=r.parentNode){var o=this.getDesc(r);if(o)return o.localPosFromDOM(t,e,n)}return-1},it.prototype.descAt=function(t){for(var e=0,n=0;e=u&&e<=c-s.border&&s.node&&s.contentDOM&&this.contentDOM.contains(s.contentDOM))return s.parseRange(t,e,u);t=i;for(var l=a;l>0;l--){var f=this.children[l-1];if(f.size&&f.dom.parentNode==this.contentDOM&&!f.emptyChildAt(1)){r=p(f.dom)+1;break}t-=f.size}-1==r&&(r=0)}if(r>-1&&(c>e||a==this.children.length-1)){e=c;for(var d=a+1;dc&&ie){var y=f;f=p,p=y}var b=document.createRange();b.setEnd(p.node,p.offset),b.setStart(f.node,f.offset),d.removeAllRanges(),d.addRange(b)}}},it.prototype.ignoreMutation=function(t){return!this.contentDOM&&"selection"!=t.type},at.contentLost.get=function(){return this.contentDOM&&this.contentDOM!=this.dom&&!this.dom.contains(this.contentDOM)},it.prototype.markDirty=function(t,e){for(var n=0,r=0;r=n:tn){var a=n+o.border,s=i-o.border;if(t>=a&&e<=s)return this.dirty=t==n||e==i?rt:nt,void(t!=a||e!=s||!o.contentLost&&o.dom.parentNode==this.contentDOM?o.markDirty(t-a,e-a):o.dirty=ot);o.dirty=ot}n=i}this.dirty=rt},it.prototype.markParentsDirty=function(){for(var t=1,e=this.parent;e;e=e.parent,t++){var n=1==t?rt:nt;e.dirty0&&(i=Dt(i,0,t,r));for(var s=0;s=0&&!s&&c.syncToMarks(a==n.node.childCount?o["d"].none:n.node.child(a).marks,r,t),c.placeWidget(e,t,i)}),(function(e,n,o,a){c.syncToMarks(e.marks,r,t),c.findNodeMatch(e,n,o,a)||c.updateNextNode(e,n,o,t,a)||c.addNode(e,n,o,t,i),i+=e.nodeSize})),c.syncToMarks(st,r,t),this.node.isTextblock&&c.addTextblockHacks(),c.destroyRest(),(c.changed||this.dirty==rt)&&(s&&this.protectLocalComposition(t,s),mt(this.contentDOM,this.children,t),a.ios&&At(this.dom))},e.prototype.localCompositionNode=function(t,e){var n=t.state.selection,o=n.from,i=n.to;if(!(!(t.state.selection instanceof r["g"])||oe+this.node.content.size)){var a=t.root.getSelection(),s=Tt(a.focusNode,a.focusOffset);if(s&&this.dom.contains(s.parentNode)){var c=s.nodeValue,u=$t(this.node.content,c,o-e,i-e);return u<0?null:{node:s,pos:u,text:c}}}},e.prototype.protectLocalComposition=function(t,e){var n=e.node,r=e.pos,o=e.text;if(!this.getDesc(n)){for(var i=n;;i=i.parentNode){if(i.parentNode==this.contentDOM)break;while(i.previousSibling)i.parentNode.removeChild(i.previousSibling);while(i.nextSibling)i.parentNode.removeChild(i.nextSibling);i.pmViewDesc&&(i.pmViewDesc=null)}var a=new ut(this,i,n,o);t.compositionNodes.push(a),this.children=Dt(this.children,r,r+o.length,t,a)}},e.prototype.update=function(t,e,n,r){return!(this.dirty==ot||!t.sameMarkup(this.node))&&(this.updateInner(t,e,n,r),!0)},e.prototype.updateInner=function(t,e,n,r){this.updateOuterDeco(e),this.node=t,this.innerDeco=n,this.contentDOM&&this.updateChildren(r,this.posAtStart),this.dirty=et},e.prototype.updateOuterDeco=function(t){if(!Ot(t,this.outerDeco)){var e=1!=this.nodeDOM.nodeType,n=this.dom;this.dom=wt(this.dom,this.nodeDOM,bt(this.outerDeco,this.node,e),bt(t,this.node,e)),this.dom!=n&&(n.pmViewDesc=null,this.dom.pmViewDesc=this),this.outerDeco=t}},e.prototype.selectNode=function(){this.nodeDOM.classList.add("ProseMirror-selectednode"),!this.contentDOM&&this.node.type.spec.draggable||(this.dom.draggable=!0)},e.prototype.deselectNode=function(){this.nodeDOM.classList.remove("ProseMirror-selectednode"),!this.contentDOM&&this.node.type.spec.draggable||this.dom.removeAttribute("draggable")},Object.defineProperties(e.prototype,n),e}(it);function pt(t,e,n,r,o){return St(r,e,t),new ft(null,t,e,n,r,r,r,o,0)}var dt=function(t){function e(e,n,r,o,i,a,s){t.call(this,e,n,r,o,i,null,a,s)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.parseRule=function(){var t=this.nodeDOM.parentNode;while(t&&t!=this.dom&&!t.pmIsDeco)t=t.parentNode;return{skip:t||!0}},e.prototype.update=function(t,e,n,r){return!(this.dirty==ot||this.dirty!=et&&!this.inParent()||!t.sameMarkup(this.node))&&(this.updateOuterDeco(e),this.dirty==et&&t.text==this.node.text||t.text==this.nodeDOM.nodeValue||(this.nodeDOM.nodeValue=t.text,r.trackWrites==this.nodeDOM&&(r.trackWrites=null)),this.node=t,this.dirty=et,!0)},e.prototype.inParent=function(){for(var t=this.parent.contentDOM,e=this.nodeDOM;e;e=e.parentNode)if(e==t)return!0;return!1},e.prototype.domFromPos=function(t){return{node:this.nodeDOM,offset:t}},e.prototype.localPosFromDOM=function(e,n,r){return e==this.nodeDOM?this.posAtStart+Math.min(n,this.node.text.length):t.prototype.localPosFromDOM.call(this,e,n,r)},e.prototype.ignoreMutation=function(t){return"characterData"!=t.type&&"selection"!=t.type},e.prototype.slice=function(t,n,r){var o=this.node.cut(t,n),i=document.createTextNode(o.text);return new e(this.parent,o,this.outerDeco,this.innerDeco,i,i,r)},e}(ft),ht=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.parseRule=function(){return{ignore:!0}},e.prototype.matchesHack=function(){return this.dirty==et},e}(it),vt=function(t){function e(e,n,r,o,i,a,s,c,u,l){t.call(this,e,n,r,o,i,a,s,u,l),this.spec=c}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.update=function(e,n,r,o){if(this.dirty==ot)return!1;if(this.spec.update){var i=this.spec.update(e,n);return i&&this.updateInner(e,n,r,o),i}return!(!this.contentDOM&&!e.isLeaf)&&t.prototype.update.call(this,e,n,r,o)},e.prototype.selectNode=function(){this.spec.selectNode?this.spec.selectNode():t.prototype.selectNode.call(this)},e.prototype.deselectNode=function(){this.spec.deselectNode?this.spec.deselectNode():t.prototype.deselectNode.call(this)},e.prototype.setSelection=function(e,n,r,o){this.spec.setSelection?this.spec.setSelection(e,n,r):t.prototype.setSelection.call(this,e,n,r,o)},e.prototype.destroy=function(){this.spec.destroy&&this.spec.destroy(),t.prototype.destroy.call(this)},e.prototype.stopEvent=function(t){return!!this.spec.stopEvent&&this.spec.stopEvent(t)},e.prototype.ignoreMutation=function(e){return this.spec.ignoreMutation?this.spec.ignoreMutation(e):t.prototype.ignoreMutation.call(this,e)},e}(ft);function mt(t,e,n){for(var r=t.firstChild,o=!1,i=0;i0&&o>=0;o--){var i=e[o],a=i.node;if(a){if(a!=t.child(r-1))break;n.push(i),--r}}return{nodes:n.reverse(),offset:r}}function Mt(t,e){return t.type.side-e.type.side}function Et(t,e,n,r){var o=e.locals(t),i=0;if(0!=o.length)for(var a=0,s=[],c=null,u=0;;){if(ai)s.push(o[a++]);var m=i+d.nodeSize;if(d.isText){var g=m;a0){if(t.childNodes.length>e&&3==t.childNodes[e].nodeType)return t.childNodes[e];t=t.childNodes[e-1],e=b(t)}else{if(!(1==t.nodeType&&e=n){var l=c.lastIndexOf(e,r-s);if(l>=0&&l+e.length+s>=n)return s+l}}}return-1}function Dt(t,e,n,r,o){for(var i=[],a=0,s=0;a=n||l<=e?i.push(c):(un&&i.push(c.slice(n-u,c.size,r)))}return i}function Nt(t,e){var n=t.root.getSelection(),o=t.state.doc;if(!n.focusNode)return null;var i=t.docView.nearestDesc(n.focusNode),a=i&&0==i.size,s=t.docView.posFromDOM(n.focusNode,n.focusOffset);if(s<0)return null;var c,u,l=o.resolve(s);if(S(n)){c=l;while(i&&!i.node)i=i.parent;if(i&&i.node.isAtom&&r["c"].isSelectable(i.node)&&i.parent&&(!i.node.isInline||!w(n.focusNode,n.focusOffset,i.dom))){var f=i.posBefore;u=new r["c"](s==f?l:o.resolve(f))}}else{var p=t.docView.posFromDOM(n.anchorNode,n.anchorOffset);if(p<0)return null;c=o.resolve(p)}if(!u){var d="pointer"==e||t.state.selection.head=this.preMatchOffset?this.preMatched[t-this.preMatchOffset]:null},kt.prototype.destroyBetween=function(t,e){if(t!=e){for(var n=t;n>1,i=Math.min(o,t.length);while(r-1)a>this.index&&(this.changed=!0,this.destroyBetween(this.index,a)),this.top=this.top.children[this.index];else{var c=lt.create(this.top,t[o],e,n);this.top.children.splice(this.index,0,c),this.top=c,this.changed=!0}this.index=0,o++}},kt.prototype.findNodeMatch=function(t,e,n,r){var o=-1,i=r<0?void 0:this.getPreMatch(r),a=this.top.children;if(i&&i.matchesNode(t,e,n))o=a.indexOf(i);else for(var s=this.index,c=Math.min(a.length,s+5);s-1&&s+this.preMatchOffset!=o)return!1;var c=a.dom,u=this.lock&&(c==this.lock||1==c.nodeType&&c.contains(this.lock.parentNode))&&!(t.isText&&a.node&&a.node.isText&&a.nodeDOM.nodeValue==t.text&&a.dirty!=ot&&Ot(e,a.outerDeco));if(!u&&a.update(t,e,n,r))return this.destroyBetween(this.index,i),a.dom!=c&&(this.changed=!0),this.index++,!0;break}}return!1},kt.prototype.addNode=function(t,e,n,r,o){this.top.children.splice(this.index++,0,ft.create(this.top,t,e,n,r,o)),this.changed=!0},kt.prototype.placeWidget=function(t,e,n){var r=this.index0?o.max(i):o.min(i),s=a.parent.inlineContent?a.depth?t.doc.resolve(e>0?a.after():a.before()):null:a;return s&&r["f"].findFrom(s,e)}function Jt(t,e){return t.dispatch(t.state.tr.setSelection(e).scrollIntoView()),!0}function Yt(t,e,n){var o=t.state.selection;if(!(o instanceof r["g"])){if(o instanceof r["c"]&&o.node.isInline)return Jt(t,new r["g"](e>0?o.$to:o.$from));var i=Kt(t.state,e);return!!i&&Jt(t,i)}if(!o.empty||n.indexOf("s")>-1)return!1;if(t.endOfTextblock(e>0?"right":"left")){var s=Kt(t.state,e);return!!(s&&s instanceof r["c"])&&Jt(t,s)}if(!(a.mac&&n.indexOf("m")>-1)){var c,u=o.$head,l=u.textOffset?null:e<0?u.nodeBefore:u.nodeAfter;if(!l||l.isText)return!1;var f=e<0?u.pos-l.nodeSize:u.pos;return!!(l.isAtom||(c=t.docView.descAt(f))&&!c.contentDOM)&&(r["c"].isSelectable(l)?Jt(t,new r["c"](e<0?t.state.doc.resolve(u.pos-l.nodeSize):u)):!!a.webkit&&Jt(t,new r["g"](t.state.doc.resolve(e<0?f:f+l.nodeSize))))}}function Gt(t){return 3==t.nodeType?t.nodeValue.length:t.childNodes.length}function Xt(t){var e=t.pmViewDesc;return e&&0==e.size&&(t.nextSibling||"BR"!=t.nodeName)}function Zt(t){var e=t.root.getSelection(),n=e.focusNode,r=e.focusOffset;if(n){var o,i,s=!1;for(a.gecko&&1==n.nodeType&&r0){if(1!=n.nodeType)break;var c=n.childNodes[r-1];if(Xt(c))o=n,i=--r;else{if(3!=c.nodeType)break;n=c,r=n.nodeValue.length}}else{if(te(n))break;var u=n.previousSibling;while(u&&Xt(u))o=n.parentNode,i=p(u),u=u.previousSibling;if(u)n=u,r=Gt(n);else{if(n=n.parentNode,n==t.dom)break;r=0}}s?ee(t,e,n,r):o&&ee(t,e,o,i)}}function Qt(t){var e=t.root.getSelection(),n=e.focusNode,r=e.focusOffset;if(n){for(var o,i,a=Gt(n);;)if(r-1)return!1;if(a.mac&&n.indexOf("m")>-1)return!1;var i=o.$from,s=o.$to;if(!i.parent.inlineContent||t.endOfTextblock(e<0?"up":"down")){var c=Kt(t.state,e);if(c&&c instanceof r["c"])return Jt(t,c)}if(!i.parent.inlineContent){var u=r["f"].findFrom(e<0?i:s,e);return!u||Jt(t,u)}return!1}function re(t,e){if(!(t.state.selection instanceof r["g"]))return!0;var n=t.state.selection,o=n.$head,i=n.$anchor,a=n.empty;if(!o.sameParent(i))return!0;if(!a)return!1;if(t.endOfTextblock(e>0?"forward":"backward"))return!0;var s=!o.textOffset&&(e<0?o.nodeBefore:o.nodeAfter);if(s&&!s.isText){var c=t.state.tr;return e<0?c.delete(o.pos-s.nodeSize,o.pos):c.delete(o.pos,o.pos+s.nodeSize),t.dispatch(c),!0}return!1}function oe(t,e,n){t.domObserver.stop(),e.contentEditable=n,t.domObserver.start()}function ie(t){if(a.safari&&!(t.state.selection.$head.parentOffset>0)){var e=t.root.getSelection(),n=e.focusNode,r=e.focusOffset;if(n&&1==n.nodeType&&0==r&&n.firstChild&&"false"==n.firstChild.contentEditable){var o=n.firstChild;oe(t,o,!0),setTimeout((function(){return oe(t,o,!1)}),20)}}}function ae(t){var e="";return t.ctrlKey&&(e+="c"),t.metaKey&&(e+="m"),t.altKey&&(e+="a"),t.shiftKey&&(e+="s"),e}function se(t,e){var n=e.keyCode,r=ae(e);return 8==n||a.mac&&72==n&&"c"==r?re(t,-1)||Zt(t):46==n||a.mac&&68==n&&"c"==r?re(t,1)||Qt(t):13==n||27==n||(37==n?Yt(t,-1,r)||Zt(t):39==n?Yt(t,1,r)||Qt(t):38==n?ne(t,-1,r)||Zt(t):40==n?ie(t)||ne(t,1,r)||Qt(t):r==(a.mac?"m":"c")&&(66==n||73==n||89==n||90==n))}function ce(t,e,n){var r=t.docView.parseRange(e,n),i=r.node,s=r.fromOffset,c=r.toOffset,u=r.from,l=r.to,f=t.root.getSelection(),p=null,d=f.anchorNode;if(d&&t.dom.contains(1==d.nodeType?d:d.parentNode)&&(p=[{node:d,offset:f.anchorOffset}],S(f)||p.push({node:f.focusNode,offset:f.focusOffset})),a.chrome&&8===t.lastKeyCode)for(var h=c;h>s;h--){var v=i.childNodes[h-1],m=v.pmViewDesc;if("BR"==v.nodeType&&!m){c=h;break}if(!m||m.size)break}var g=t.state.doc,y=t.someProp("domParser")||o["a"].fromSchema(t.state.schema),b=g.resolve(u),w=null,x=y.parse(i,{topNode:b.parent,topMatch:b.parent.contentMatchAt(b.index()),topOpen:!0,from:s,to:c,preserveWhitespace:!b.parent.type.spec.code||"full",editableContent:!0,findPositions:p,ruleFromNode:ue,context:b});if(p&&null!=p[0].pos){var O=p[0].pos,_=p[1]&&p[1].pos;null==_&&(_=O),w={anchor:O+u,head:_+u}}return{doc:x,sel:w,from:u,to:l}}function ue(t){var e=t.pmViewDesc;if(e)return e.parseRule();if("BR"==t.nodeName&&t.parentNode){if(a.safari&&/^(ul|ol)$/i.test(t.parentNode.nodeName)){var n=document.createElement("div");return n.appendChild(document.createElement("li")),{skip:n}}if(t.parentNode.lastChild==t||a.safari&&/^(tr|table)$/i.test(t.parentNode.nodeName))return{ignore:!0}}else if("IMG"==t.nodeName&&t.getAttribute("mark-placeholder"))return{ignore:!0}}function le(t,e,n,o,i){if(e<0){var s=t.lastSelectionTime>Date.now()-50?t.lastSelectionOrigin:null,c=Nt(t,s);if(c&&!t.state.selection.eq(c)){var u=t.state.tr.setSelection(c);"pointer"==s?u.setMeta("pointer",!0):"key"==s&&u.scrollIntoView(),t.dispatch(u)}}else{var l=t.state.doc.resolve(e),f=l.sharedDepth(n);e=l.before(f+1),n=t.state.doc.resolve(n).after(f+1);var p,d,h=t.state.selection,v=ce(t,e,n),m=t.state.doc,g=m.slice(v.from,v.to);8===t.lastKeyCode&&Date.now()-100t.state.selection.from&&y.start<=t.state.selection.from+2?y.start=t.state.selection.from:y.endA=t.state.selection.to-2&&(y.endB+=t.state.selection.to-y.endA,y.endA=t.state.selection.to)),a.ie&&a.ie_version<=11&&y.endB==y.start+1&&y.endA==y.start&&y.start>v.from&&"  "==v.doc.textBetween(y.start-v.from-1,y.start-v.from+1)&&(y.start--,y.endA--,y.endB--);var w,x=v.doc.resolveNoCache(y.start-v.from),S=v.doc.resolveNoCache(y.endB-v.from),_=x.sameParent(S)&&x.parent.inlineContent;if((a.ios&&t.lastIOSEnter>Date.now()-225&&(!_||i.some((function(t){return"DIV"==t.nodeName||"P"==t.nodeName})))||!_&&x.posy.start&&de(m,y.start,y.endA,x,S)&&t.someProp("handleKeyDown",(function(e){return e(t,O(8,"Backspace"))})))a.android&&a.chrome&&t.domObserver.suppressSelectionUpdates();else{a.android&&!_&&x.start()!=S.start()&&0==S.parentOffset&&x.depth==S.depth&&v.sel&&v.sel.anchor==v.sel.head&&v.sel.head==y.endA&&(y.endB-=2,S=v.doc.resolveNoCache(y.endB-v.from),setTimeout((function(){t.someProp("handleKeyDown",(function(e){return e(t,O(13,"Enter"))}))}),20));var k,C,M,E,A=y.start,T=y.endA;if(_)if(x.pos==S.pos)a.ie&&a.ie_version<=11&&0==x.parentOffset&&(t.domObserver.suppressSelectionUpdates(),setTimeout((function(){return Pt(t)}),20)),k=t.state.tr.delete(A,T),C=m.resolve(y.start).marksAcross(m.resolve(y.endA));else if(y.endA==y.endB&&(E=m.resolve(y.start))&&(M=pe(x.parent.content.cut(x.parentOffset,S.parentOffset),E.parent.content.cut(E.parentOffset,y.endA-E.start()))))k=t.state.tr,"add"==M.type?k.addMark(A,T,M.mark):k.removeMark(A,T,M.mark);else if(x.parent.child(x.index()).isText&&x.index()==S.index()-(S.textOffset?0:1)){var $=x.parent.textBetween(x.parentOffset,S.parentOffset);if(t.someProp("handleTextInput",(function(e){return e(t,A,T,$)})))return;k=t.state.tr.insertText($,A,T)}if(k||(k=t.state.tr.replace(A,T,v.doc.slice(y.start-v.from,y.endB-v.from))),v.sel){var D=fe(t,k.doc,v.sel);D&&!(a.chrome&&a.android&&t.composing&&D.empty&&(D.head==A||D.head==k.mapping.map(T)-1)||a.ie&&D.empty&&D.head==A)&&k.setSelection(D)}C&&k.ensureMarks(C),t.dispatch(k.scrollIntoView())}}}function fe(t,e,n){return Math.max(n.anchor,n.head)>e.content.size?null:qt(t,e.resolve(n.anchor),e.resolve(n.head))}function pe(t,e){for(var n,r,i,a=t.firstChild.marks,s=e.firstChild.marks,c=a,u=s,l=0;ln||he(a,!0,!1)0&&(e||t.indexAfter(r)==t.node(r).childCount))r--,o++,e=!1;if(n){var i=t.node(r).maybeChild(t.indexAfter(r));while(i&&!i.isLeaf)i=i.firstChild,o++}return o}function ve(t,e,n,r,o){var i=t.findDiffStart(e,n);if(null==i)return null;var a=t.findDiffEnd(e,n+t.size,n+e.size),s=a.a,c=a.b;if("end"==o){var u=Math.max(0,i-Math.min(s,c));r-=s+u-i}if(s=s?i-r:0;i-=l,c=i+(c-s),s=i}else if(c=c?i-r:0;i-=f,s=i+(s-c),c=i}return{start:i,endA:s,endB:c}}function me(t,e){var n=[],r=e.content,i=e.openStart,a=e.openEnd;while(i>1&&a>1&&1==r.childCount&&1==r.firstChild.childCount){i--,a--;var s=r.firstChild;n.push(s.type.name,s.attrs!=s.type.defaultAttrs?s.attrs:null),r=s.content}var c=t.someProp("clipboardSerializer")||o["b"].fromSchema(t.state.schema),u=Ce(),l=u.createElement("div");l.appendChild(c.serializeFragment(r,{document:u}));var f,p=l.firstChild;while(p&&1==p.nodeType&&(f=_e[p.nodeName.toLowerCase()])){for(var d=f.length-1;d>=0;d--){var h=u.createElement(f[d]);while(l.firstChild)h.appendChild(l.firstChild);l.appendChild(h)}p=l.firstChild}p&&1==p.nodeType&&p.setAttribute("data-pm-slice",i+" "+a+" "+JSON.stringify(n));var v=t.someProp("clipboardTextSerializer",(function(t){return t(e)}))||e.content.textBetween(0,e.content.size,"\n\n");return{dom:l,text:v}}function ge(t,e,n,r,i){var a,s,c=i.parent.type.spec.code;if(!n&&!e)return null;var u=e&&(r||c||!n);if(u){if(t.someProp("transformPastedText",(function(t){e=t(e,c||r)})),c)return new o["j"](o["c"].from(t.state.schema.text(e)),0,0);var l=t.someProp("clipboardTextParser",(function(t){return t(e,i,r)}));l?s=l:(a=document.createElement("div"),e.trim().split(/(?:\r\n?|\n)+/).forEach((function(t){a.appendChild(document.createElement("p")).textContent=t})))}else t.someProp("transformPastedHTML",(function(t){n=t(n)})),a=Me(n);var f=a&&a.querySelector("[data-pm-slice]"),p=f&&/^(\d+) (\d+) (.*)/.exec(f.getAttribute("data-pm-slice"));if(!s){var d=t.someProp("clipboardParser")||t.someProp("domParser")||o["a"].fromSchema(t.state.schema);s=d.parseSlice(a,{preserveWhitespace:!(!u&&!p),context:i})}return s=p?Ee(Oe(s,+p[1],+p[2]),p[3]):o["j"].maxOpen(ye(s.content,i),!1),t.someProp("transformPasted",(function(t){s=t(s)})),s}function ye(t,e){if(t.childCount<2)return t;for(var n=function(n){var r=e.node(n),i=r.contentMatchAt(e.index(n)),a=void 0,s=[];if(t.forEach((function(t){if(s){var e,n=i.findWrapping(t.type);if(!n)return s=null;if(e=s.length&&a.length&&we(n,a,t,s[s.length-1],0))s[s.length-1]=e;else{s.length&&(s[s.length-1]=xe(s[s.length-1],a.length));var r=be(t,n);s.push(r),i=i.matchType(r.type,r.attrs),a=n}}})),s)return{v:o["c"].from(s)}},r=e.depth;r>=0;r--){var i=n(r);if(i)return i.v}return t}function be(t,e,n){void 0===n&&(n=0);for(var r=e.length-1;r>=n;r--)t=e[r].create(null,o["c"].from(t));return t}function we(t,e,n,r,i){if(i=n&&(c=e<0?s.contentMatchAt(0).fillBefore(c,t.childCount>1||a<=i).append(c):c.append(s.contentMatchAt(s.childCount).fillBefore(o["c"].empty,!0))),t.replaceChild(e<0?0:t.childCount-1,s.copy(c))}function Oe(t,e,n){return e]*>)*/.exec(t);e&&(t=t.slice(e[0].length));var n,r=Ce().createElement("div"),o=/(?:]*>)*<([a-z][^>\s]+)/i.exec(t),i=0;(n=o&&_e[o[1].toLowerCase()])&&(t=n.map((function(t){return"<"+t+">"})).join("")+t+n.map((function(t){return""})).reverse().join(""),i=n.length),r.innerHTML=t;for(var a=0;a=0;c-=2){var u=r.nodes[n[c]];if(!u||u.hasRequiredAttrs())break;i=o["c"].from(u.create(n[c+1],i)),a++,s++}return new o["j"](i,a,s)}var Ae={childList:!0,characterData:!0,characterDataOldValue:!0,attributes:!0,attributeOldValue:!0,subtree:!0},Te=a.ie&&a.ie_version<=11,$e=function(){this.anchorNode=this.anchorOffset=this.focusNode=this.focusOffset=null};$e.prototype.set=function(t){this.anchorNode=t.anchorNode,this.anchorOffset=t.anchorOffset,this.focusNode=t.focusNode,this.focusOffset=t.focusOffset},$e.prototype.eq=function(t){return t.anchorNode==this.anchorNode&&t.anchorOffset==this.anchorOffset&&t.focusNode==this.focusNode&&t.focusOffset==this.focusOffset};var De=function(t,e){var n=this;this.view=t,this.handleDOMChange=e,this.queue=[],this.flushingSoon=-1,this.observer=window.MutationObserver&&new window.MutationObserver((function(t){for(var e=0;et.target.nodeValue.length}))?n.flushSoon():n.flush()})),this.currentSelection=new $e,Te&&(this.onCharData=function(t){n.queue.push({target:t.target,type:"characterData",oldValue:t.prevValue}),n.flushSoon()}),this.onSelectionChange=this.onSelectionChange.bind(this),this.suppressingSelectionUpdates=!1};De.prototype.flushSoon=function(){var t=this;this.flushingSoon<0&&(this.flushingSoon=window.setTimeout((function(){t.flushingSoon=-1,t.flush()}),20))},De.prototype.forceFlush=function(){this.flushingSoon>-1&&(window.clearTimeout(this.flushingSoon),this.flushingSoon=-1,this.flush())},De.prototype.start=function(){this.observer&&this.observer.observe(this.view.dom,Ae),Te&&this.view.dom.addEventListener("DOMCharacterDataModified",this.onCharData),this.connectSelection()},De.prototype.stop=function(){var t=this;if(this.observer){var e=this.observer.takeRecords();if(e.length){for(var n=0;n-1)){var t=this.observer?this.observer.takeRecords():[];this.queue.length&&(t=this.queue.concat(t),this.queue.length=0);var e=this.view.root.getSelection(),n=!this.suppressingSelectionUpdates&&!this.currentSelection.eq(e)&&Wt(this.view)&&!this.ignoreSelectionChange(e),r=-1,o=-1,i=!1,s=[];if(this.view.editable)for(var c=0;c1){var l=s.filter((function(t){return"BR"==t.nodeName}));if(2==l.length){var f=l[0],p=l[1];f.parentNode&&f.parentNode.parentNode==p.parentNode?p.remove():f.remove()}}(r>-1||n)&&(r>-1&&(this.view.docView.markDirty(r,o),Pe(this.view)),this.handleDOMChange(r,o,i,s),this.view.docView.dirty?this.view.updateState(this.view.state):this.currentSelection.eq(e)||Pt(this.view))}},De.prototype.registerMutation=function(t,e){if(e.indexOf(t.target)>-1)return null;var n=this.view.docView.nearestDesc(t.target);if("attributes"==t.type&&(n==this.view.docView||"contenteditable"==t.attributeName||"style"==t.attributeName&&!t.oldValue&&!t.target.getAttribute("style")))return null;if(!n||n.ignoreMutation(t))return null;if("childList"==t.type){var r=t.previousSibling,o=t.nextSibling;if(a.ie&&a.ie_version<=11&&t.addedNodes.length)for(var i=0;ii.depth?e(t,n,i.nodeAfter,i.before(r),o,!0):e(t,n,i.node(r),i.before(r),o,!1)})))return{v:!0}},s=i.depth+1;s>0;s--){var c=a(s);if(c)return c.v}return!1}function Ke(t,e,n){t.focused||t.focus();var r=t.state.tr.setSelection(e);"pointer"==n&&r.setMeta("pointer",!0),t.dispatch(r)}function Je(t,e){if(-1==e)return!1;var n=t.state.doc.resolve(e),o=n.nodeAfter;return!!(o&&o.isAtom&&r["c"].isSelectable(o))&&(Ke(t,new r["c"](n),"pointer"),!0)}function Ye(t,e){if(-1==e)return!1;var n,o,i=t.state.selection;i instanceof r["c"]&&(n=i.node);for(var a=t.state.doc.resolve(e),s=a.depth+1;s>0;s--){var c=s>a.depth?a.nodeAfter:a.node(s);if(r["c"].isSelectable(c)){o=n&&i.$from.depth>0&&s>=i.$from.depth&&a.before(i.$from.depth+1)==i.$from.pos?a.before(i.$from.depth):a.before(s);break}}return null!=o&&(Ke(t,r["c"].create(t.state.doc,o),"pointer"),!0)}function Ge(t,e,n,r,o){return Ue(t,"handleClickOn",e,n,r)||t.someProp("handleClick",(function(n){return n(t,e,r)}))||(o?Ye(t,n):Je(t,n))}function Xe(t,e,n,r){return Ue(t,"handleDoubleClickOn",e,n,r)||t.someProp("handleDoubleClick",(function(n){return n(t,e,r)}))}function Ze(t,e,n,r){return Ue(t,"handleTripleClickOn",e,n,r)||t.someProp("handleTripleClick",(function(n){return n(t,e,r)}))||Qe(t,n)}function Qe(t,e){var n=t.state.doc;if(-1==e)return!!n.inlineContent&&(Ke(t,r["g"].create(n,0,n.content.size),"pointer"),!0);for(var o=n.resolve(e),i=o.depth+1;i>0;i--){var a=i>o.depth?o.nodeAfter:o.node(i),s=o.before(i);if(a.inlineContent)Ke(t,r["g"].create(n,s+1,s+1+a.content.size),"pointer");else{if(!r["c"].isSelectable(a))continue;Ke(t,r["c"].create(n,s),"pointer")}return!0}}function tn(t){return cn(t)}Ie.keydown=function(t,e){if(t.shiftKey=16==e.keyCode||e.shiftKey,!rn(t,e))if(t.domObserver.forceFlush(),t.lastKeyCode=e.keyCode,t.lastKeyCodeTime=Date.now(),!a.ios||13!=e.keyCode||e.ctrlKey||e.altKey||e.metaKey)t.someProp("handleKeyDown",(function(n){return n(t,e)}))||se(t,e)?e.preventDefault():Le(t,"key");else{var n=Date.now();t.lastIOSEnter=n,t.lastIOSEnterFallbackTimeout=setTimeout((function(){t.lastIOSEnter==n&&(t.someProp("handleKeyDown",(function(e){return e(t,O(13,"Enter"))})),t.lastIOSEnter=0)}),200)}},Ie.keyup=function(t,e){16==e.keyCode&&(t.shiftKey=!1)},Ie.keypress=function(t,e){if(!(rn(t,e)||!e.charCode||e.ctrlKey&&!e.altKey||a.mac&&e.metaKey))if(t.someProp("handleKeyPress",(function(n){return n(t,e)})))e.preventDefault();else{var n=t.state.selection;if(!(n instanceof r["g"])||!n.$from.sameParent(n.$to)){var o=String.fromCharCode(e.charCode);t.someProp("handleTextInput",(function(e){return e(t,n.$from.pos,n.$to.pos,o)}))||t.dispatch(t.state.tr.insertText(o).scrollIntoView()),e.preventDefault()}}};var en=a.mac?"metaKey":"ctrlKey";je.mousedown=function(t,e){t.shiftKey=e.shiftKey;var n=tn(t),r=Date.now(),o="singleClick";r-t.lastClick.time<500&&We(e,t.lastClick)&&!e[en]&&("singleClick"==t.lastClick.type?o="doubleClick":"doubleClick"==t.lastClick.type&&(o="tripleClick")),t.lastClick={time:r,x:e.clientX,y:e.clientY,type:o};var i=t.posAtCoords(He(e));i&&("singleClick"==o?t.mouseDown=new nn(t,i,e,n):("doubleClick"==o?Xe:Ze)(t,i.pos,i.inside,e)?e.preventDefault():Le(t,"pointer"))};var nn=function(t,e,n,o){var i,s,c=this;if(this.view=t,this.startDoc=t.state.doc,this.pos=e,this.event=n,this.flushed=o,this.selectNode=n[en],this.allowDefault=n.shiftKey,e.inside>-1)i=t.state.doc.nodeAt(e.inside),s=e.inside;else{var u=t.state.doc.resolve(e.pos);i=u.parent,s=u.depth?u.before():0}this.mightDrag=null;var l=o?null:n.target,f=l?t.docView.nearestDesc(l,!0):null;this.target=f?f.dom:null,(i.type.spec.draggable&&!1!==i.type.spec.selectable||t.state.selection instanceof r["c"]&&s==t.state.selection.from)&&(this.mightDrag={node:i,pos:s,addAttr:this.target&&!this.target.draggable,setUneditable:this.target&&a.gecko&&!this.target.hasAttribute("contentEditable")}),this.target&&this.mightDrag&&(this.mightDrag.addAttr||this.mightDrag.setUneditable)&&(this.view.domObserver.stop(),this.mightDrag.addAttr&&(this.target.draggable=!0),this.mightDrag.setUneditable&&setTimeout((function(){return c.target.setAttribute("contentEditable","false")}),20),this.view.domObserver.start()),t.root.addEventListener("mouseup",this.up=this.up.bind(this)),t.root.addEventListener("mousemove",this.move=this.move.bind(this)),Le(t,"pointer")};function rn(t,e){return!!t.composing||!!(a.safari&&Math.abs(e.timeStamp-t.compositionEndedAt)<500)&&(t.compositionEndedAt=-2e8,!0)}nn.prototype.done=function(){this.view.root.removeEventListener("mouseup",this.up),this.view.root.removeEventListener("mousemove",this.move),this.mightDrag&&this.target&&(this.view.domObserver.stop(),this.mightDrag.addAttr&&this.target.removeAttribute("draggable"),this.mightDrag.setUneditable&&this.target.removeAttribute("contentEditable"),this.view.domObserver.start()),this.view.mouseDown=null},nn.prototype.up=function(t){if(this.done(),this.view.dom.contains(3==t.target.nodeType?t.target.parentNode:t.target)){var e=this.pos;this.view.state.doc!=this.startDoc&&(e=this.view.posAtCoords(He(t))),this.allowDefault||!e?Le(this.view,"pointer"):Ge(this.view,e.pos,e.inside,t,this.selectNode)?t.preventDefault():this.flushed||a.safari&&this.mightDrag&&!this.mightDrag.node.isAtom||a.chrome&&!(this.view.state.selection instanceof r["g"])&&(e.pos==this.view.state.selection.from||e.pos==this.view.state.selection.to)?(Ke(this.view,r["f"].near(this.view.state.doc.resolve(e.pos)),"pointer"),t.preventDefault()):Le(this.view,"pointer")}},nn.prototype.move=function(t){!this.allowDefault&&(Math.abs(this.event.x-t.clientX)>4||Math.abs(this.event.y-t.clientY)>4)&&(this.allowDefault=!0),Le(this.view,"pointer")},je.touchdown=function(t){tn(t),Le(t,"pointer")},je.contextmenu=function(t){return tn(t)};var on=a.android?5e3:-1;function an(t,e){clearTimeout(t.composingTimeout),e>-1&&(t.composingTimeout=setTimeout((function(){return cn(t)}),e))}function sn(t){t.composing=!1;while(t.compositionNodes.length>0)t.compositionNodes.pop().markParentsDirty()}function cn(t,e){if(t.domObserver.forceFlush(),sn(t),e||t.docView.dirty){var n=Nt(t);return n&&!n.eq(t.state.selection)?t.dispatch(t.state.tr.setSelection(n)):t.updateState(t.state),!0}return!1}function un(t,e){if(t.dom.parentNode){var n=t.dom.parentNode.appendChild(document.createElement("div"));n.appendChild(e),n.style.cssText="position: fixed; left: -10000px; top: 10px";var r=getSelection(),o=document.createRange();o.selectNodeContents(e),t.dom.blur(),r.removeAllRanges(),r.addRange(o),setTimeout((function(){n.parentNode&&n.parentNode.removeChild(n),t.focus()}),50)}}Ie.compositionstart=Ie.compositionupdate=function(t){if(!t.composing){t.domObserver.flush();var e=t.state,n=e.selection.$from;if(e.selection.empty&&(e.storedMarks||!n.textOffset&&n.parentOffset&&n.nodeBefore.marks.some((function(t){return!1===t.type.spec.inclusive}))))t.markCursor=t.state.storedMarks||n.marks(),cn(t,!0),t.markCursor=null;else if(cn(t),a.gecko&&e.selection.empty&&n.parentOffset&&!n.textOffset&&n.nodeBefore.marks.length)for(var r=t.root.getSelection(),o=r.focusNode,i=r.focusOffset;o&&1==o.nodeType&&0!=i;){var s=i<0?o.lastChild:o.childNodes[i-1];if(!s)break;if(3==s.nodeType){r.collapse(s,s.nodeValue.length);break}o=s,i=-1}t.composing=!0}an(t,on)},Ie.compositionend=function(t,e){t.composing&&(t.composing=!1,t.compositionEndedAt=e.timeStamp,an(t,20))};var ln=a.ie&&a.ie_version<15||a.ios&&a.webkit_version<604;function fn(t){return 0==t.openStart&&0==t.openEnd&&1==t.content.childCount?t.content.firstChild:null}function pn(t,e){if(t.dom.parentNode){var n=t.shiftKey||t.state.selection.$from.parent.type.spec.code,r=t.dom.parentNode.appendChild(document.createElement(n?"textarea":"div"));n||(r.contentEditable="true"),r.style.cssText="position: fixed; left: -10000px; top: 10px",r.focus(),setTimeout((function(){t.focus(),r.parentNode&&r.parentNode.removeChild(r),n?dn(t,r.value,null,e):dn(t,r.textContent,r.innerHTML,e)}),50)}}function dn(t,e,n,r){var i=ge(t,e,n,t.shiftKey,t.state.selection.$from);if(!t.someProp("handlePaste",(function(e){return e(t,r,i||o["j"].empty)}))&&i){var a=fn(i),s=a?t.state.tr.replaceSelectionWith(a,t.shiftKey):t.state.tr.replaceSelection(i);t.dispatch(s.scrollIntoView().setMeta("paste",!0).setMeta("uiEvent","paste"))}}je.copy=Ie.cut=function(t,e){var n=t.state.selection,r="cut"==e.type;if(!n.empty){var o=ln?null:e.clipboardData,i=n.content(),a=me(t,i),s=a.dom,c=a.text;o?(e.preventDefault(),o.clearData(),o.setData("text/html",s.innerHTML),o.setData("text/plain",c)):un(t,s),r&&t.dispatch(t.state.tr.deleteSelection().scrollIntoView().setMeta("uiEvent","cut"))}},Ie.paste=function(t,e){var n=ln?null:e.clipboardData,r=n&&n.getData("text/html"),o=n&&n.getData("text/plain");n&&(r||o||n.files.length)?(dn(t,o,r,e),e.preventDefault()):pn(t,e)};var hn=function(t,e){this.slice=t,this.move=e},vn=a.mac?"altKey":"ctrlKey";for(var mn in je.dragstart=function(t,e){var n=t.mouseDown;if(n&&n.done(),e.dataTransfer){var o=t.state.selection,i=o.empty?null:t.posAtCoords(He(e));if(i&&i.pos>=o.from&&i.pos<=(o instanceof r["c"]?o.to-1:o.to));else if(n&&n.mightDrag)t.dispatch(t.state.tr.setSelection(r["c"].create(t.state.doc,n.mightDrag.pos)));else if(e.target&&1==e.target.nodeType){var a=t.docView.nearestDesc(e.target,!0);if(!a||!a.node.type.spec.draggable||a==t.docView)return;t.dispatch(t.state.tr.setSelection(r["c"].create(t.state.doc,a.posBefore)))}var s=t.state.selection.content(),c=me(t,s),u=c.dom,l=c.text;e.dataTransfer.clearData(),e.dataTransfer.setData(ln?"Text":"text/html",u.innerHTML),ln||e.dataTransfer.setData("text/plain",l),t.dragging=new hn(s,!e[vn])}},je.dragend=function(t){var e=t.dragging;window.setTimeout((function(){t.dragging==e&&(t.dragging=null)}),50)},Ie.dragover=Ie.dragenter=function(t,e){return e.preventDefault()},Ie.drop=function(t,e){var n=t.dragging;if(t.dragging=null,e.dataTransfer){var a=t.posAtCoords(He(e));if(a){var s=t.state.doc.resolve(a.pos);if(s){var c=n&&n.slice||ge(t,e.dataTransfer.getData(ln?"Text":"text/plain"),ln?null:e.dataTransfer.getData("text/html"),!1,s),u=n&&!e[vn];if(t.someProp("handleDrop",(function(n){return n(t,e,c||o["j"].empty,u)})))e.preventDefault();else if(c){e.preventDefault();var l=c?Object(i["g"])(t.state.doc,s.pos,c):s.pos;null==l&&(l=s.pos);var f=t.state.tr;u&&f.deleteSelection();var p=f.mapping.map(l),d=0==c.openStart&&0==c.openEnd&&1==c.content.childCount,h=f.doc;if(d?f.replaceRangeWith(p,p,c.content.firstChild):f.replaceRange(p,p,c),!f.doc.eq(h)){var v=f.doc.resolve(p);if(d&&r["c"].isSelectable(c.content.firstChild)&&v.nodeAfter&&v.nodeAfter.sameMarkup(c.content.firstChild))f.setSelection(new r["c"](v));else{var m=f.mapping.map(l);f.mapping.maps[f.mapping.maps.length-1].forEach((function(t,e,n,r){return m=r})),f.setSelection(qt(t,v,f.doc.resolve(m)))}t.focus(),t.dispatch(f.setMeta("uiEvent","drop"))}}}}}},je.focus=function(t){t.focused||(t.domObserver.stop(),t.dom.classList.add("ProseMirror-focused"),t.domObserver.start(),t.focused=!0,setTimeout((function(){t.docView&&t.hasFocus()&&!t.domObserver.currentSelection.eq(t.root.getSelection())&&Pt(t)}),20))},je.blur=function(t){t.focused&&(t.domObserver.stop(),t.dom.classList.remove("ProseMirror-focused"),t.domObserver.start(),t.domObserver.currentSelection.set({}),t.focused=!1)},je.beforeinput=function(t,e){if(a.chrome&&a.android&&"deleteContentBackward"==e.inputType){var n=t.domChangeCount;setTimeout((function(){if(t.domChangeCount==n&&(t.dom.blur(),t.focus(),!t.someProp("handleKeyDown",(function(e){return e(t,O(8,"Backspace"))})))){var e=t.state.selection,r=e.$cursor;r&&r.pos>0&&t.dispatch(t.state.tr.delete(r.pos-1,r.pos).scrollIntoView())}}),50)}},Ie)je[mn]=Ie[mn];function gn(t,e){if(t==e)return!0;for(var n in t)if(t[n]!==e[n])return!1;for(var r in e)if(!(r in t))return!1;return!0}var yn=function(t,e){this.spec=e||_n,this.side=this.spec.side||0,this.toDOM=t};yn.prototype.map=function(t,e,n,r){var o=t.mapResult(e.from+r,this.side<0?-1:1),i=o.pos,a=o.deleted;return a?null:new xn(i-n,i-n,this)},yn.prototype.valid=function(){return!0},yn.prototype.eq=function(t){return this==t||t instanceof yn&&(this.spec.key&&this.spec.key==t.spec.key||this.toDOM==t.toDOM&&gn(this.spec,t.spec))};var bn=function(t,e){this.spec=e||_n,this.attrs=t};bn.prototype.map=function(t,e,n,r){var o=t.map(e.from+r,this.spec.inclusiveStart?-1:1)-n,i=t.map(e.to+r,this.spec.inclusiveEnd?1:-1)-n;return o>=i?null:new xn(o,i,this)},bn.prototype.valid=function(t,e){return e.from=t&&(!o||o(a.spec))&&n.push(a.copy(a.from+r,a.to+r))}for(var s=0;st){var c=this.children[s]+1;this.children[s+2].findInner(t-c,e-c,n,r+c,o)}},kn.prototype.map=function(t,e,n){return this==Cn||0==t.maps.length?this:this.mapInner(t,e,0,0,n||_n)},kn.prototype.mapInner=function(t,e,n,r,o){for(var i,a=0;aa&&u.to=t){this.children[o]==t&&(n=this.children[o+2]);break}for(var i=t+1,a=i+e.content.size,s=0;si&&c.type instanceof bn){var u=Math.max(i,c.from)-i,l=Math.min(a,c.to)-i;uc+i||(e>=s[a]+i?s[a+1]=-1:n>=o&&(u=r-n-(e-t))&&(s[a]+=u,s[a+1]+=u))}},u=0;u=r.content.size){l=!0;continue}var h=n.map(t[f+1]+i,-1),v=h-o,m=r.content.findIndex(d),g=m.index,y=m.offset,b=r.maybeChild(g);if(b&&y==d&&y+b.nodeSize==v){var w=s[f+2].mapInner(n,b,p+1,t[f]+i+1,a);w!=Cn?(s[f]=d,s[f+1]=v,s[f+2]=w):(s[f+1]=-2,l=!0)}else l=!0}if(l){var x=Tn(s,t,e||[],n,o,i,a),S=Nn(x,r,0,a);e=S.local;for(var O=0;On&&a.to0)e++;t.splice(e,0,n)}function Rn(t){var e=[];return t.someProp("decorations",(function(n){var r=n(t.state);r&&r!=Cn&&e.push(r)})),t.cursorWrapper&&e.push(kn.create(t.state.doc,[t.cursorWrapper.deco])),Mn.from(e)}Mn.prototype.forChild=function(t,e){if(e.isLeaf)return kn.empty;for(var n=[],r=0;ro.scrollToSelection?"to selection":"preserve",p=i||!this.docView.matchesNode(t.doc,l,u);!p&&t.selection.eq(o.selection)||(s=!0);var d="preserve"==f&&s&&null==this.dom.style.overflowAnchor&&E(this);if(s){this.domObserver.stop();var h=p&&(a.ie||a.chrome)&&!this.composing&&!o.selection.empty&&!t.selection.empty&&qn(o.selection,t.selection);if(p){var v=a.chrome?this.trackWrites=this.root.getSelection().focusNode:null;!i&&this.docView.update(t.doc,l,u,this)||(this.docView.updateOuterDeco([]),this.docView.destroy(),this.docView=pt(t.doc,l,u,this.dom,this)),v&&!this.trackWrites&&(h=!0)}h||!(this.mouseDown&&this.domObserver.currentSelection.eq(this.root.getSelection())&&Ut(this))?Pt(this,h):(Bt(this,t.selection),this.domObserver.setCurSelection()),this.domObserver.start()}if(this.updatePluginViews(o),"reset"==f)this.dom.scrollTop=0;else if("to selection"==f){var m=this.root.getSelection().focusNode;this.someProp("handleScrollToSelection",(function(t){return t(n)}))||(t.selection instanceof r["c"]?M(this,this.docView.domAfterPos(t.selection.from).getBoundingClientRect(),m):M(this,this.coordsAtPos(t.selection.head,1),m))}else d&&T(d)},Ln.prototype.destroyPluginViews=function(){var t;while(t=this.pluginViews.pop())t.destroy&&t.destroy()},Ln.prototype.updatePluginViews=function(t){if(t&&t.plugins==this.state.plugins)for(var e=0;e=e?t:""+Array(e+1-r.length).join(n)+t},h={s:d,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),o=n%60;return(e<=0?"+":"-")+d(r,2,"0")+":"+d(o,2,"0")},m:function t(e,n){if(e.date()=t}))};e.default=o},"605d":function(t,e,n){var r=n("c6b6"),o=n("da84");t.exports="process"==r(o.process)},6235:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var r=n("78ef"),o=(0,r.regex)("alpha",/^[a-zA-Z]*$/);e.default=o},6417:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var r=n("78ef"),o=function(t){return(0,r.withParams)({type:"not"},(function(e,n){return!(0,r.req)(e)||!t.call(this,e,n)}))};e.default=o},6547:function(t,e,n){var r=n("a691"),o=n("1d80"),i=function(t){return function(e,n){var i,a,s=String(o(e)),c=r(n),u=s.length;return c<0||c>=u?t?"":void 0:(i=s.charCodeAt(c),i<55296||i>56319||c+1===u||(a=s.charCodeAt(c+1))<56320||a>57343?t?s.charAt(c):i:t?s.slice(c,c+2):a-56320+(i-55296<<10)+65536)}};t.exports={codeAt:i(!1),charAt:i(!0)}},"665f":function(t,e,n){"use strict";n.d(e,"a",(function(){return p})),n.d(e,"b",(function(){return m})),n.d(e,"c",(function(){return b})),n.d(e,"d",(function(){return v})),n.d(e,"e",(function(){return d}));var r=n("0ac0"),o=n("304a"),i=["ol",0],a=["ul",0],s=["li",0],c={attrs:{order:{default:1}},parseDOM:[{tag:"ol",getAttrs:function(t){return{order:t.hasAttribute("start")?+t.getAttribute("start"):1}}}],toDOM:function(t){return 1==t.attrs.order?i:["ol",{start:t.attrs.order},0]}},u={parseDOM:[{tag:"ul"}],toDOM:function(){return a}},l={parseDOM:[{tag:"li"}],toDOM:function(){return s},defining:!0};function f(t,e){var n={};for(var r in t)n[r]=t[r];for(var o in e)n[o]=e[o];return n}function p(t,e,n){return t.append({ordered_list:f(c,{content:"list_item+",group:n}),bullet_list:f(u,{content:"list_item+",group:n}),list_item:f(l,{content:e})})}function d(t,e){return function(n,i){var a=n.selection,s=a.$from,c=a.$to,u=s.blockRange(c),l=!1,f=u;if(!u)return!1;if(u.depth>=2&&s.node(u.depth-1).type.compatibleContent(t)&&0==u.startIndex){if(0==s.index(u.depth-1))return!1;var p=n.doc.resolve(u.start-2);f=new o["g"](p,p,u.depth),u.endIndex=0;c--)s=o["c"].from(n[c].type.create(n[c].attrs,s));t.step(new r["b"](e.start-(i?2:0),e.end,e.start,e.end,new o["j"](s,0,0),n.length,!0));for(var u=0,l=0;l0,p=a.depth-(f?1:2);p>=a.depth-3;p--)l=o["c"].from(a.node(p).copy(l));l=l.append(o["c"].from(t.createAndFill()));var d=e.tr.replace(a.before(f?null:-1),a.after(-3),new o["j"](l,f?3:2,2));d.setSelection(e.selection.constructor.near(d.doc.resolve(a.pos+(f?3:2)))),n(d.scrollIntoView())}return!0}var h=s.pos==a.end()?u.contentMatchAt(0).defaultType:null,v=e.tr.delete(a.pos,s.pos),m=h&&[null,{type:h}];return!!Object(r["f"])(v.doc,a.pos,2,m)&&(n&&n(v.split(a.pos,2,m).scrollIntoView()),!0)}}function m(t){return function(e,n){var r=e.selection,o=r.$from,i=r.$to,a=o.blockRange(i,(function(e){return e.childCount&&e.firstChild.type==t}));return!!a&&(!n||(o.node(a.depth-1).type==t?g(e,n,t,a):y(e,n,a)))}}function g(t,e,n,i){var a=t.tr,s=i.end,c=i.$to.end(i.depth);return su;c--)s-=a.child(c).nodeSize,i.delete(s-1,s+1);var l=i.doc.resolve(n.start),f=l.nodeAfter,p=0==n.startIndex,d=n.endIndex==a.childCount,h=l.node(-1),v=l.index(-1);if(!h.canReplace(v+(p?0:1),v+1,f.content.append(d?o["c"].empty:o["c"].from(a))))return!1;var m=l.pos,g=m+f.nodeSize;return i.step(new r["b"](m-(p?1:0),g+(d?1:0),m+1,g-1,new o["j"]((p?o["c"].empty:o["c"].from(a.copy(o["c"].empty))).append(d?o["c"].empty:o["c"].from(a.copy(o["c"].empty))),p?0:1,d?0:1),p?0:1)),e(i.scrollIntoView()),!0}function b(t){return function(e,n){var i=e.selection,a=i.$from,s=i.$to,c=a.blockRange(s,(function(e){return e.childCount&&e.firstChild.type==t}));if(!c)return!1;var u=c.startIndex;if(0==u)return!1;var l=c.parent,f=l.child(u-1);if(f.type!=t)return!1;if(n){var p=f.lastChild&&f.lastChild.type==l.type,d=o["c"].from(p?t.create():null),h=new o["j"](o["c"].from(t.create(null,o["c"].from(l.type.create(null,d)))),p?3:1,0),v=c.start,m=c.end;n(e.tr.step(new r["b"](v-(p?3:1),m,v,m,h,1,!0)).scrollIntoView())}return!0}}},"69f3":function(t,e,n){var r,o,i,a=n("7f9a"),s=n("da84"),c=n("861d"),u=n("9112"),l=n("5135"),f=n("c6cd"),p=n("f772"),d=n("d012"),h=s.WeakMap,v=function(t){return i(t)?o(t):r(t,{})},m=function(t){return function(e){var n;if(!c(e)||(n=o(e)).type!==t)throw TypeError("Incompatible receiver, "+t+" required");return n}};if(a){var g=f.state||(f.state=new h),y=g.get,b=g.has,w=g.set;r=function(t,e){return e.facade=t,w.call(g,t,e),e},o=function(t){return y.call(g,t)||{}},i=function(t){return b.call(g,t)}}else{var x=p("state");d[x]=!0,r=function(t,e){return e.facade=t,u(t,x,e),e},o=function(t){return l(t,x)?t[x]:{}},i=function(t){return l(t,x)}}t.exports={set:r,get:o,has:i,enforce:v,getterFor:m}},"6eeb":function(t,e,n){var r=n("da84"),o=n("9112"),i=n("5135"),a=n("ce4e"),s=n("8925"),c=n("69f3"),u=c.get,l=c.enforce,f=String(String).split("String");(t.exports=function(t,e,n,s){var c,u=!!s&&!!s.unsafe,p=!!s&&!!s.enumerable,d=!!s&&!!s.noTargetGet;"function"==typeof n&&("string"!=typeof e||i(n,"name")||o(n,"name",e),c=l(n),c.source||(c.source=f.join("string"==typeof e?e:""))),t!==r?(u?!d&&t[e]&&(p=!0):delete t[e],p?t[e]=n:o(t,e,n)):p?t[e]=n:a(e,n)})(Function.prototype,"toString",(function(){return"function"==typeof this&&u(this).source||s(this)}))},7418:function(t,e){e.f=Object.getOwnPropertySymbols},"772d":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var r=n("78ef"),o=/^(?:(?:https?|ftp):\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})))(?::\d{2,5})?(?:[/?#]\S*)?$/i,i=(0,r.regex)("url",o);e.default=i},7839:function(t,e){t.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},"78ef":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"withParams",{enumerable:!0,get:function(){return r.default}}),e.regex=e.ref=e.len=e.req=void 0;var r=o(n("8750"));function o(t){return t&&t.__esModule?t:{default:t}}function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}var a=function(t){if(Array.isArray(t))return!!t.length;if(void 0===t||null===t)return!1;if(!1===t)return!0;if(t instanceof Date)return!isNaN(t.getTime());if("object"===i(t)){for(var e in t)return!0;return!1}return!!String(t).length};e.req=a;var s=function(t){return Array.isArray(t)?t.length:"object"===i(t)?Object.keys(t).length:String(t).length};e.len=s;var c=function(t,e,n){return"function"===typeof t?t.call(e,n):n[t]};e.ref=c;var u=function(t,e){return(0,r.default)({type:t},(function(t){return!a(t)||e.test(t)}))};e.regex=u},"7b0b":function(t,e,n){var r=n("1d80");t.exports=function(t){return Object(r(t))}},"7f06":function(t,e,n){"use strict";n.d(e,"a",(function(){return b}));for(var r={8:"Backspace",9:"Tab",10:"Enter",12:"NumLock",13:"Enter",16:"Shift",17:"Control",18:"Alt",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",44:"PrintScreen",45:"Insert",46:"Delete",59:";",61:"=",91:"Meta",92:"Meta",106:"*",107:"+",108:",",109:"-",110:".",111:"/",144:"NumLock",145:"ScrollLock",160:"Shift",161:"Shift",162:"Control",163:"Control",164:"Alt",165:"Alt",173:"-",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'",229:"q"},o={48:")",49:"!",50:"@",51:"#",52:"$",53:"%",54:"^",55:"&",56:"*",57:"(",59:":",61:"+",173:"_",186:":",187:"+",188:"<",189:"_",190:">",191:"?",192:"~",219:"{",220:"|",221:"}",222:'"',229:"Q"},i="undefined"!=typeof navigator&&/Chrome\/(\d+)/.exec(navigator.userAgent),a="undefined"!=typeof navigator&&/Apple Computer/.test(navigator.vendor),s="undefined"!=typeof navigator&&/Gecko\/\d+/.test(navigator.userAgent),c="undefined"!=typeof navigator&&/Mac/.test(navigator.platform),u="undefined"!=typeof navigator&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent),l=i&&(c||+i[1]<57)||s&&c,f=0;f<10;f++)r[48+f]=r[96+f]=String(f);for(f=1;f<=24;f++)r[f+111]="F"+f;for(f=65;f<=90;f++)r[f]=String.fromCharCode(f+32),o[f]=String.fromCharCode(f);for(var p in r)o.hasOwnProperty(p)||(o[p]=r[p]);function d(t){var e=l&&(t.ctrlKey||t.altKey||t.metaKey)||(a||u)&&t.shiftKey&&t.key&&1==t.key.length,n=!e&&t.key||(t.shiftKey?o:r)[t.keyCode]||t.key||"Unidentified";return"Esc"==n&&(n="Escape"),"Del"==n&&(n="Delete"),"Left"==n&&(n="ArrowLeft"),"Up"==n&&(n="ArrowUp"),"Right"==n&&(n="ArrowRight"),"Down"==n&&(n="ArrowDown"),n}var h=n("5313"),v="undefined"!=typeof navigator&&/Mac/.test(navigator.platform);function m(t){var e,n,r,o,i=t.split(/-(?!$)/),a=i[i.length-1];"Space"==a&&(a=" ");for(var s=0;s127)&&(o=r[n.keyCode])&&o!=i){var c=e[y(o,n,!0)];if(c&&c(t.state,t.dispatch,t))return!0}else if(a&&n.shiftKey){var u=e[y(i,n,!0)];if(u&&u(t.state,t.dispatch,t))return!0}return!1}}},"7f9a":function(t,e,n){var r=n("da84"),o=n("8925"),i=r.WeakMap;t.exports="function"===typeof i&&/native code/.test(o(i))},"825a":function(t,e,n){var r=n("861d");t.exports=function(t){if(!r(t))throw TypeError(String(t)+" is not an object");return t}},"82f1":function(t,e,n){"use strict";var r=n("a026"),o=n("ee2b");function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}var a={selector:"vue-portal-target-".concat(o())},s=function(t){return a.selector=t},c="undefined"!==typeof window&&void 0!==("undefined"===typeof document?"undefined":i(document)),u=r["a"].extend({abstract:!0,name:"PortalOutlet",props:["nodes","tag"],data:function(t){return{updatedNodes:t.nodes}},render:function(t){var e=this.updatedNodes&&this.updatedNodes();return e?e.length<2&&!e[0].text?e:t(this.tag||"DIV",e):t()},destroyed:function(){var t=this.$el;t.parentNode.removeChild(t)}}),l=r["a"].extend({name:"VueSimplePortal",props:{disabled:{type:Boolean},prepend:{type:Boolean},selector:{type:String,default:function(){return"#".concat(a.selector)}},tag:{type:String,default:"DIV"}},render:function(t){if(this.disabled){var e=this.$scopedSlots&&this.$scopedSlots.default();return e?e.length<2&&!e[0].text?e:t(this.tag,e):t()}return t()},created:function(){this.getTargetEl()||this.insertTargetEl()},updated:function(){var t=this;this.$nextTick((function(){t.disabled||t.slotFn===t.$scopedSlots.default||(t.container.updatedNodes=t.$scopedSlots.default),t.slotFn=t.$scopedSlots.default}))},beforeDestroy:function(){this.unmount()},watch:{disabled:{immediate:!0,handler:function(t){t?this.unmount():this.$nextTick(this.mount)}}},methods:{getTargetEl:function(){if(c)return document.querySelector(this.selector)},insertTargetEl:function(){if(c){var t=document.querySelector("body"),e=document.createElement(this.tag);e.id=this.selector.substring(1),t.appendChild(e)}},mount:function(){var t=this.getTargetEl(),e=document.createElement("DIV");this.prepend&&t.firstChild?t.insertBefore(e,t.firstChild):t.appendChild(e),this.container=new u({el:e,parent:this,propsData:{tag:this.tag,nodes:this.$scopedSlots.default}})},unmount:function(){this.container&&(this.container.$destroy(),delete this.container)}}});function f(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};t.component(e.name||"portal",l),e.defaultSelector&&s(e.defaultSelector)}"undefined"!==typeof window&&window.Vue&&window.Vue===r["a"]&&r["a"].use(f),e["a"]=f},"83ab":function(t,e,n){var r=n("d039");t.exports=!r((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},"861d":function(t,e){t.exports=function(t){return"object"===typeof t?null!==t:"function"===typeof t}},8726:function(t,e,n){"use strict";n.d(e,"a",(function(){return M})),n.d(e,"b",(function(){return A})),n.d(e,"c",(function(){return $})),n.d(e,"d",(function(){return E})),n.d(e,"e",(function(){return T}));var r=200,o=function(){};o.prototype.append=function(t){return t.length?(t=o.from(t),!this.length&&t||t.length=e?o.empty:this.sliceInner(Math.max(0,t),Math.min(this.length,e))},o.prototype.get=function(t){if(!(t<0||t>=this.length))return this.getInner(t)},o.prototype.forEach=function(t,e,n){void 0===e&&(e=0),void 0===n&&(n=this.length),e<=n?this.forEachInner(t,e,n,0):this.forEachInvertedInner(t,e,n,0)},o.prototype.map=function(t,e,n){void 0===e&&(e=0),void 0===n&&(n=this.length);var r=[];return this.forEach((function(e,n){return r.push(t(e,n))}),e,n),r},o.from=function(t){return t instanceof o?t:t&&t.length?new i(t):o.empty};var i=function(t){function e(e){t.call(this),this.values=e}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var n={length:{configurable:!0},depth:{configurable:!0}};return e.prototype.flatten=function(){return this.values},e.prototype.sliceInner=function(t,n){return 0==t&&n==this.length?this:new e(this.values.slice(t,n))},e.prototype.getInner=function(t){return this.values[t]},e.prototype.forEachInner=function(t,e,n,r){for(var o=e;o=n;o--)if(!1===t(this.values[o],r+o))return!1},e.prototype.leafAppend=function(t){if(this.length+t.length<=r)return new e(this.values.concat(t.flatten()))},e.prototype.leafPrepend=function(t){if(this.length+t.length<=r)return new e(t.flatten().concat(this.values))},n.length.get=function(){return this.values.length},n.depth.get=function(){return 0},Object.defineProperties(e.prototype,n),e}(o);o.empty=new i([]);var a=function(t){function e(e,n){t.call(this),this.left=e,this.right=n,this.length=e.length+n.length,this.depth=Math.max(e.depth,n.depth)+1}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.flatten=function(){return this.left.flatten().concat(this.right.flatten())},e.prototype.getInner=function(t){return to&&!1===this.right.forEachInner(t,Math.max(e-o,0),Math.min(this.length,n)-o,r+o))&&void 0)},e.prototype.forEachInvertedInner=function(t,e,n,r){var o=this.left.length;return!(e>o&&!1===this.right.forEachInvertedInner(t,e-o,Math.max(n,o)-o,r+o))&&(!(n=n?this.right.slice(t-n,e-n):this.left.slice(t,n).append(this.right.slice(0,e-n))},e.prototype.leafAppend=function(t){var n=this.right.leafAppend(t);if(n)return new e(this.left,n)},e.prototype.leafPrepend=function(t){var n=this.left.leafPrepend(t);if(n)return new e(n,this.right)},e.prototype.appendInner=function(t){return this.left.depth>=Math.max(this.right.depth,t.depth)+1?new e(this.left,new e(this.right,t)):new e(this,t)},e}(o),s=o,c=s,u=n("0ac0"),l=n("5313"),f=500,p=function(t,e){this.items=t,this.eventCount=e};function d(t,e){var n;return t.forEach((function(t,r){if(t.selection&&0==e--)return n=r,!1})),t.slice(n)}p.prototype.popEvent=function(t,e){var n=this;if(0==this.eventCount)return null;for(var r,o,i=this.items.length;;i--){var a=this.items.get(i-1);if(a.selection){--i;break}}e&&(r=this.remapping(i,this.items.length),o=r.maps.length);var s,c,u=t.tr,l=[],f=[];return this.items.forEach((function(t,e){if(!t.step)return r||(r=n.remapping(i,e+1),o=r.maps.length),o--,void f.push(t);if(r){f.push(new h(t.map));var a,d=t.step.map(r.slice(o));d&&u.maybeStep(d).doc&&(a=u.mapping.maps[u.mapping.maps.length-1],l.push(new h(a,null,null,l.length+f.length))),o--,a&&r.appendMap(a,o)}else u.maybeStep(t.step);return t.selection?(s=r?t.selection.map(r.slice(o)):t.selection,c=new p(n.items.slice(0,i).append(f.reverse().concat(l)),n.eventCount-1),!1):void 0}),this.items.length,0),{remaining:c,transform:u,selection:s}},p.prototype.addTransform=function(t,e,n,r){for(var o=[],i=this.eventCount,a=this.items,s=!r&&a.length?a.get(a.length-1):null,c=0;cm&&(a=d(a,v),i-=v),new p(a.append(o),i)},p.prototype.remapping=function(t,e){var n=new u["a"];return this.items.forEach((function(e,r){var o=null!=e.mirrorOffset&&r-e.mirrorOffset>=t?n.maps.length-e.mirrorOffset:null;n.appendMap(e.map,o)}),t,e),n},p.prototype.addMaps=function(t){return 0==this.eventCount?this:new p(this.items.append(t.map((function(t){return new h(t)}))),this.eventCount)},p.prototype.rebased=function(t,e){if(!this.eventCount)return this;var n=[],r=Math.max(0,this.items.length-e),o=t.mapping,i=t.steps.length,a=this.eventCount;this.items.forEach((function(t){t.selection&&a--}),r);var s=e;this.items.forEach((function(e){var r=o.getMirror(--s);if(null!=r){i=Math.min(i,r);var c=o.maps[r];if(e.step){var u=t.steps[r].invert(t.docs[r]),l=e.selection&&e.selection.map(o.slice(s+1,r));l&&a++,n.push(new h(c,u,l))}else n.push(new h(c))}}),r);for(var c=[],u=e;uf&&(d=d.compress(this.items.length-n.length)),d},p.prototype.emptyItemCount=function(){var t=0;return this.items.forEach((function(e){e.step||t++})),t},p.prototype.compress=function(t){void 0===t&&(t=this.items.length);var e=this.remapping(0,t),n=e.maps.length,r=[],o=0;return this.items.forEach((function(i,a){if(a>=t)r.push(i),i.selection&&o++;else if(i.step){var s=i.step.map(e.slice(n)),c=s&&s.getMap();if(n--,c&&e.appendMap(c,n),s){var u=i.selection&&i.selection.map(e.slice(n));u&&o++;var l,f=new h(c.invert(),s,u),p=r.length-1;(l=r.length&&r[p].merge(f))?r[p]=l:r.push(f)}}else i.map&&n--}),this.items.length,0),new p(c.from(r.reverse()),o)},p.empty=new p(c.empty,0);var h=function(t,e,n,r){this.map=t,this.step=e,this.selection=n,this.mirrorOffset=r};h.prototype.merge=function(t){if(this.step&&t.step&&!t.selection){var e=t.step.merge(this.step);if(e)return new h(e.getMap().invert(),e,this.selection)}};var v=function(t,e,n,r){this.done=t,this.undone=e,this.prevRanges=n,this.prevTime=r},m=20;function g(t,e,n,r){var o,i=n.getMeta(k);if(i)return i.historyState;n.getMeta(C)&&(t=new v(t.done,t.undone,null,0));var a=n.getMeta("appendedTransaction");if(0==n.steps.length)return t;if(a&&a.getMeta(k))return a.getMeta(k).redo?new v(t.done.addTransform(n,null,r,_(e)),t.undone,b(n.mapping.maps[n.steps.length-1]),t.prevTime):new v(t.done,t.undone.addTransform(n,null,r,_(e)),null,t.prevTime);if(!1===n.getMeta("addToHistory")||a&&!1===a.getMeta("addToHistory"))return(o=n.getMeta("rebased"))?new v(t.done.rebased(n,o),t.undone.rebased(n,o),w(t.prevRanges,n.mapping),t.prevTime):new v(t.done.addMaps(n.mapping.maps),t.undone.addMaps(n.mapping.maps),w(t.prevRanges,n.mapping),t.prevTime);var s=0==t.prevTime||!a&&(t.prevTime<(n.time||0)-r.newGroupDelay||!y(n,t.prevRanges)),c=a?w(t.prevRanges,n.mapping):b(n.mapping.maps[n.steps.length-1]);return new v(t.done.addTransform(n,s?e.selection.getBookmark():null,r,_(e)),p.empty,c,n.time)}function y(t,e){if(!e)return!1;if(!t.docChanged)return!0;var n=!1;return t.mapping.maps[0].forEach((function(t,r){for(var o=0;o=e[o]&&(n=!0)})),n}function b(t){var e=[];return t.forEach((function(t,n,r,o){return e.push(r,o)})),e}function w(t,e){if(!t)return null;for(var n=[],r=0;r-1}function i(t,e){return e instanceof t||e&&(e.name===t.name||e._name===t._name)}function a(t,e){for(var n in e)t[n]=e[n];return t}var s={name:"RouterView",functional:!0,props:{name:{type:String,default:"default"}},render:function(t,e){var n=e.props,r=e.children,o=e.parent,i=e.data;i.routerView=!0;var s=o.$createElement,u=n.name,l=o.$route,f=o._routerViewCache||(o._routerViewCache={}),d=0,p=!1;while(o&&o._routerRoot!==o){var h=o.$vnode?o.$vnode.data:{};h.routerView&&d++,h.keepAlive&&o._directInactive&&o._inactive&&(p=!0),o=o.$parent}if(i.routerViewDepth=d,p){var v=f[u],g=v&&v.component;return g?(v.configProps&&c(g,i,v.route,v.configProps),s(g,i,r)):s()}var m=l.matched[d],y=m&&m.components[u];if(!m||!y)return f[u]=null,s();f[u]={component:y},i.registerRouteInstance=function(t,e){var n=m.instances[u];(e&&n!==t||!e&&n===t)&&(m.instances[u]=e)},(i.hook||(i.hook={})).prepatch=function(t,e){m.instances[u]=e.componentInstance},i.hook.init=function(t){t.data.keepAlive&&t.componentInstance&&t.componentInstance!==m.instances[u]&&(m.instances[u]=t.componentInstance)};var b=m.props&&m.props[u];return b&&(a(f[u],{route:l,configProps:b}),c(y,i,l,b)),s(y,i,r)}};function c(t,e,n,r){var o=e.props=u(n,r);if(o){o=e.props=a({},o);var i=e.attrs=e.attrs||{};for(var s in o)t.props&&s in t.props||(i[s]=o[s],delete o[s])}}function u(t,e){switch(typeof e){case"undefined":return;case"object":return e;case"function":return e(t);case"boolean":return e?t.params:void 0;default:0}}var l=/[!'()*]/g,f=function(t){return"%"+t.charCodeAt(0).toString(16)},d=/%2C/g,p=function(t){return encodeURIComponent(t).replace(l,f).replace(d,",")},h=decodeURIComponent;function v(t,e,n){void 0===e&&(e={});var r,o=n||g;try{r=o(t||"")}catch(a){r={}}for(var i in e)r[i]=e[i];return r}function g(t){var e={};return t=t.trim().replace(/^(\?|#|&)/,""),t?(t.split("&").forEach((function(t){var n=t.replace(/\+/g," ").split("="),r=h(n.shift()),o=n.length>0?h(n.join("=")):null;void 0===e[r]?e[r]=o:Array.isArray(e[r])?e[r].push(o):e[r]=[e[r],o]})),e):e}function m(t){var e=t?Object.keys(t).map((function(e){var n=t[e];if(void 0===n)return"";if(null===n)return p(e);if(Array.isArray(n)){var r=[];return n.forEach((function(t){void 0!==t&&(null===t?r.push(p(e)):r.push(p(e)+"="+p(t)))})),r.join("&")}return p(e)+"="+p(n)})).filter((function(t){return t.length>0})).join("&"):null;return e?"?"+e:""}var y=/\/?$/;function b(t,e,n,r){var o=r&&r.options.stringifyQuery,i=e.query||{};try{i=w(i)}catch(s){}var a={name:e.name||t&&t.name,meta:t&&t.meta||{},path:e.path||"/",hash:e.hash||"",query:i,params:e.params||{},fullPath:S(e,o),matched:t?x(t):[]};return n&&(a.redirectedFrom=S(n,o)),Object.freeze(a)}function w(t){if(Array.isArray(t))return t.map(w);if(t&&"object"===typeof t){var e={};for(var n in t)e[n]=w(t[n]);return e}return t}var _=b(null,{path:"/"});function x(t){var e=[];while(t)e.unshift(t),t=t.parent;return e}function S(t,e){var n=t.path,r=t.query;void 0===r&&(r={});var o=t.hash;void 0===o&&(o="");var i=e||m;return(n||"/")+i(r)+o}function O(t,e){return e===_?t===e:!!e&&(t.path&&e.path?t.path.replace(y,"")===e.path.replace(y,"")&&t.hash===e.hash&&E(t.query,e.query):!(!t.name||!e.name)&&(t.name===e.name&&t.hash===e.hash&&E(t.query,e.query)&&E(t.params,e.params)))}function E(t,e){if(void 0===t&&(t={}),void 0===e&&(e={}),!t||!e)return t===e;var n=Object.keys(t),r=Object.keys(e);return n.length===r.length&&n.every((function(n){var r=t[n],o=e[n];return"object"===typeof r&&"object"===typeof o?E(r,o):String(r)===String(o)}))}function C(t,e){return 0===t.path.replace(y,"/").indexOf(e.path.replace(y,"/"))&&(!e.hash||t.hash===e.hash)&&A(t.query,e.query)}function A(t,e){for(var n in e)if(!(n in t))return!1;return!0}function $(t,e,n){var r=t.charAt(0);if("/"===r)return t;if("?"===r||"#"===r)return e+t;var o=e.split("/");n&&o[o.length-1]||o.pop();for(var i=t.replace(/^\//,"").split("/"),a=0;a=0&&(e=t.slice(r),t=t.slice(0,r));var o=t.indexOf("?");return o>=0&&(n=t.slice(o+1),t=t.slice(0,o)),{path:t,query:n,hash:e}}function M(t){return t.replace(/\/\//g,"/")}var T=Array.isArray||function(t){return"[object Array]"==Object.prototype.toString.call(t)},j=J,P=R,D=F,I=H,L=X,N=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function R(t,e){var n,r=[],o=0,i=0,a="",s=e&&e.delimiter||"/";while(null!=(n=N.exec(t))){var c=n[0],u=n[1],l=n.index;if(a+=t.slice(i,l),i=l+c.length,u)a+=u[1];else{var f=t[i],d=n[2],p=n[3],h=n[4],v=n[5],g=n[6],m=n[7];a&&(r.push(a),a="");var y=null!=d&&null!=f&&f!==d,b="+"===g||"*"===g,w="?"===g||"*"===g,_=n[2]||s,x=h||v;r.push({name:p||o++,prefix:d||"",delimiter:_,optional:w,repeat:b,partial:y,asterisk:!!m,pattern:x?V(x):m?".*":"[^"+B(_)+"]+?"})}}return i1||!_.length)return 0===_.length?t():t("span",{},_)}if("a"===this.tag)w.on=y,w.attrs={href:c};else{var x=st(this.$slots.default);if(x){x.isStatic=!1;var S=x.data=a({},x.data);for(var E in S.on=S.on||{},S.on){var A=S.on[E];E in y&&(S.on[E]=Array.isArray(A)?A:[A])}for(var $ in y)$ in S.on?S.on[$].push(y[$]):S.on[$]=m;var k=x.data.attrs=a({},x.data.attrs);k.href=c}else w.on=y}return t(this.tag,w,this.$slots.default)}};function at(t){if(!(t.metaKey||t.altKey||t.ctrlKey||t.shiftKey)&&!t.defaultPrevented&&(void 0===t.button||0===t.button)){if(t.currentTarget&&t.currentTarget.getAttribute){var e=t.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(e))return}return t.preventDefault&&t.preventDefault(),!0}}function st(t){if(t)for(var e,n=0;n-1&&(s.params[d]=n.params[d]);return s.path=Q(u.path,s.params,'named route "'+c+'"'),l(u,s,a)}if(s.path){s.params={};for(var p=0;p=t.length?n():t[o]?e(t[o],(function(){r(o+1)})):r(o+1)};r(0)}function Rt(t){return function(e,n,r){var i=!1,a=0,s=null;Ft(t,(function(t,e,n,c){if("function"===typeof t&&void 0===t.cid){i=!0,a++;var u,l=Bt((function(e){Ht(e)&&(e=e.default),t.resolved="function"===typeof e?e:et.extend(e),n.components[c]=e,a--,a<=0&&r()})),f=Bt((function(t){var e="Failed to resolve async component "+c+": "+t;s||(s=o(t)?t:new Error(e),r(s))}));try{u=t(l,f)}catch(p){f(p)}if(u)if("function"===typeof u.then)u.then(l,f);else{var d=u.component;d&&"function"===typeof d.then&&d.then(l,f)}}})),i||r()}}function Ft(t,e){return zt(t.map((function(t){return Object.keys(t.components).map((function(n){return e(t.components[n],t.instances[n],t,n)}))})))}function zt(t){return Array.prototype.concat.apply([],t)}var Ut="function"===typeof Symbol&&"symbol"===typeof Symbol.toStringTag;function Ht(t){return t.__esModule||Ut&&"Module"===t[Symbol.toStringTag]}function Bt(t){var e=!1;return function(){var n=[],r=arguments.length;while(r--)n[r]=arguments[r];if(!e)return e=!0,t.apply(this,n)}}var Vt=function(t){function e(e){t.call(this),this.name=this._name="NavigationDuplicated",this.message='Navigating to current location ("'+e.fullPath+'") is not allowed',Object.defineProperty(this,"stack",{value:(new t).stack,writable:!0,configurable:!0})}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(Error);Vt._name="NavigationDuplicated";var Yt=function(t,e){this.router=t,this.base=qt(e),this.current=_,this.pending=null,this.ready=!1,this.readyCbs=[],this.readyErrorCbs=[],this.errorCbs=[]};function qt(t){if(!t)if(ut){var e=document.querySelector("base");t=e&&e.getAttribute("href")||"/",t=t.replace(/^https?:\/\/[^\/]+/,"")}else t="/";return"/"!==t.charAt(0)&&(t="/"+t),t.replace(/\/$/,"")}function Gt(t,e){var n,r=Math.max(t.length,e.length);for(n=0;n-1?decodeURI(t.slice(0,r))+t.slice(r):decodeURI(t)}else t=decodeURI(t.slice(0,n))+t.slice(n);return t}function ce(t){var e=window.location.href,n=e.indexOf("#"),r=n>=0?e.slice(0,n):e;return r+"#"+t}function ue(t){Dt?It(ce(t)):window.location.hash=t}function le(t){Dt?Lt(ce(t)):window.location.replace(ce(t))}var fe=function(t){function e(e,n){t.call(this,e,n),this.stack=[],this.index=-1}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.push=function(t,e,n){var r=this;this.transitionTo(t,(function(t){r.stack=r.stack.slice(0,r.index+1).concat(t),r.index++,e&&e(t)}),n)},e.prototype.replace=function(t,e,n){var r=this;this.transitionTo(t,(function(t){r.stack=r.stack.slice(0,r.index).concat(t),e&&e(t)}),n)},e.prototype.go=function(t){var e=this,n=this.index+t;if(!(n<0||n>=this.stack.length)){var r=this.stack[n];this.confirmTransition(r,(function(){e.index=n,e.updateRoute(r)}),(function(t){i(Vt,t)&&(e.index=n)}))}},e.prototype.getCurrentLocation=function(){var t=this.stack[this.stack.length-1];return t?t.fullPath:"/"},e.prototype.ensureURL=function(){},e}(Yt),de=function(t){void 0===t&&(t={}),this.app=null,this.apps=[],this.options=t,this.beforeHooks=[],this.resolveHooks=[],this.afterHooks=[],this.matcher=ht(t.routes||[],this);var e=t.mode||"hash";switch(this.fallback="history"===e&&!Dt&&!1!==t.fallback,this.fallback&&(e="hash"),ut||(e="abstract"),this.mode=e,e){case"history":this.history=new ne(this,t.base);break;case"hash":this.history=new oe(this,t.base,this.fallback);break;case"abstract":this.history=new fe(this,t.base);break;default:0}},pe={currentRoute:{configurable:!0}};function he(t,e){return t.push(e),function(){var n=t.indexOf(e);n>-1&&t.splice(n,1)}}function ve(t,e,n){var r="hash"===n?"#"+e:e;return t?M(t+"/"+r):r}de.prototype.match=function(t,e,n){return this.matcher.match(t,e,n)},pe.currentRoute.get=function(){return this.history&&this.history.current},de.prototype.init=function(t){var e=this;if(this.apps.push(t),t.$once("hook:destroyed",(function(){var n=e.apps.indexOf(t);n>-1&&e.apps.splice(n,1),e.app===t&&(e.app=e.apps[0]||null)})),!this.app){this.app=t;var n=this.history;if(n instanceof ne)n.transitionTo(n.getCurrentLocation());else if(n instanceof oe){var r=function(){n.setupListeners()};n.transitionTo(n.getCurrentLocation(),r,r)}n.listen((function(t){e.apps.forEach((function(e){e._route=t}))}))}},de.prototype.beforeEach=function(t){return he(this.beforeHooks,t)},de.prototype.beforeResolve=function(t){return he(this.resolveHooks,t)},de.prototype.afterEach=function(t){return he(this.afterHooks,t)},de.prototype.onReady=function(t,e){this.history.onReady(t,e)},de.prototype.onError=function(t){this.history.onError(t)},de.prototype.push=function(t,e,n){var r=this;if(!e&&!n&&"undefined"!==typeof Promise)return new Promise((function(e,n){r.history.push(t,e,n)}));this.history.push(t,e,n)},de.prototype.replace=function(t,e,n){var r=this;if(!e&&!n&&"undefined"!==typeof Promise)return new Promise((function(e,n){r.history.replace(t,e,n)}));this.history.replace(t,e,n)},de.prototype.go=function(t){this.history.go(t)},de.prototype.back=function(){this.go(-1)},de.prototype.forward=function(){this.go(1)},de.prototype.getMatchedComponents=function(t){var e=t?t.matched?t:this.resolve(t).route:this.currentRoute;return e?[].concat.apply([],e.matched.map((function(t){return Object.keys(t.components).map((function(e){return t.components[e]}))}))):[]},de.prototype.resolve=function(t,e,n){e=e||this.history.current;var r=tt(t,e,n,this),o=this.match(r,e),i=o.redirectedFrom||o.fullPath,a=this.history.base,s=ve(a,i,this.mode);return{location:r,route:o,href:s,normalizedTo:r,resolved:o}},de.prototype.addRoutes=function(t){this.matcher.addRoutes(t),this.history.current!==_&&this.history.transitionTo(this.history.getCurrentLocation())},Object.defineProperties(de.prototype,pe),de.install=ct,de.version="3.1.6",ut&&window.Vue&&window.Vue.use(de),e["a"]=de},"90e3":function(t,e){var n=0,r=Math.random();t.exports=function(t){return"Symbol("+String(void 0===t?"":t)+")_"+(++n+r).toString(36)}},9112:function(t,e,n){var r=n("83ab"),o=n("9bf2"),i=n("5c6c");t.exports=r?function(t,e,n){return o.f(t,e,i(1,n))}:function(t,e,n){return t[e]=n,t}},"91d3":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n("78ef");e.default=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:":";return(0,r.withParams)({type:"macAddress"},(function(e){if(!(0,r.req)(e))return!0;if("string"!==typeof e)return!1;var n="string"===typeof t&&""!==t?e.split(t):12===e.length||16===e.length?e.match(/.{2}/g):null;return null!==n&&(6===n.length||8===n.length)&&n.every(o)}))};var o=function(t){return t.toLowerCase().match(/^[0-9a-f]{2}$/)}},9263:function(t,e,n){"use strict";var r=n("ad6d"),o=n("9f7f"),i=RegExp.prototype.exec,a=String.prototype.replace,s=i,c=function(){var t=/a/,e=/b*/g;return i.call(t,"a"),i.call(e,"a"),0!==t.lastIndex||0!==e.lastIndex}(),u=o.UNSUPPORTED_Y||o.BROKEN_CARET,l=void 0!==/()??/.exec("")[1],f=c||l||u;f&&(s=function(t){var e,n,o,s,f=this,d=u&&f.sticky,p=r.call(f),h=f.source,v=0,g=t;return d&&(p=p.replace("y",""),-1===p.indexOf("g")&&(p+="g"),g=String(t).slice(f.lastIndex),f.lastIndex>0&&(!f.multiline||f.multiline&&"\n"!==t[f.lastIndex-1])&&(h="(?: "+h+")",g=" "+g,v++),n=new RegExp("^(?:"+h+")",p)),l&&(n=new RegExp("^"+h+"$(?!\\s)",p)),c&&(e=f.lastIndex),o=i.call(d?n:f,g),d?o?(o.input=o.input.slice(v),o[0]=o[0].slice(v),o.index=f.lastIndex,f.lastIndex+=o[0].length):f.lastIndex=0:c&&o&&(f.lastIndex=f.global?o.index+o[0].length:e),l&&o&&o.length>1&&a.call(o[0],n,(function(){for(s=1;s=0;--i){var a=this.tryEntries[i],s=a.completion;if("root"===a.tryLoc)return o("end");if(a.tryLoc<=this.prev){var c=r.call(a,"catchLoc"),u=r.call(a,"finallyLoc");if(c&&u){if(this.prev=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),$(n),v}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var r=n.completion;if("throw"===r.type){var o=r.arg;$(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,n,r){return this.delegate={iterator:M(t),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=e),v}},t}(t.exports);try{regeneratorRuntime=r}catch(o){Function("r","regeneratorRuntime = r")(r)}},9911:function(t,e,n){"use strict";var r=n("23e7"),o=n("857a"),i=n("af03");r({target:"String",proto:!0,forced:i("link")},{link:function(t){return o(this,"a","href",t)}})},"99af":function(t,e,n){"use strict";var r=n("23e7"),o=n("d039"),i=n("e8b5"),a=n("861d"),s=n("7b0b"),c=n("50c4"),u=n("8418"),l=n("65f0"),f=n("1dde"),d=n("b622"),p=n("2d00"),h=d("isConcatSpreadable"),v=9007199254740991,g="Maximum allowed index exceeded",m=p>=51||!o((function(){var t=[];return t[h]=!1,t.concat()[0]!==t})),y=f("concat"),b=function(t){if(!a(t))return!1;var e=t[h];return void 0!==e?!!e:i(t)},w=!m||!y;r({target:"Array",proto:!0,forced:w},{concat:function(t){var e,n,r,o,i,a=s(this),f=l(a,0),d=0;for(e=-1,r=arguments.length;ev)throw TypeError(g);for(n=0;n=v)throw TypeError(g);u(f,d++,i)}return f.length=d,f}})},"9bdd":function(t,e,n){var r=n("825a");t.exports=function(t,e,n,o){try{return o?e(r(n)[0],n[1]):e(n)}catch(a){var i=t["return"];throw void 0!==i&&r(i.call(t)),a}}},"9bf2":function(t,e,n){var r=n("83ab"),o=n("0cfb"),i=n("825a"),a=n("c04e"),s=Object.defineProperty;e.f=r?s:function(t,e,n){if(i(t),e=a(e,!0),i(n),o)try{return s(t,e,n)}catch(r){}if("get"in n||"set"in n)throw TypeError("Accessors not supported");return"value"in n&&(t[e]=n.value),t}},"9ed3":function(t,e,n){"use strict";var r=n("ae93").IteratorPrototype,o=n("7c73"),i=n("5c6c"),a=n("d44e"),s=n("3f8c"),c=function(){return this};t.exports=function(t,e,n){var u=e+" Iterator";return t.prototype=o(r,{next:i(1,n)}),a(t,u,!1,!0),s[u]=c,t}},"9f7f":function(t,e,n){"use strict";var r=n("d039");function o(t,e){return RegExp(t,e)}e.UNSUPPORTED_Y=r((function(){var t=o("a","y");return t.lastIndex=2,null!=t.exec("abcd")})),e.BROKEN_CARET=r((function(){var t=o("^r","gy");return t.lastIndex=2,null!=t.exec("str")}))},a026:function(t,e,n){"use strict";(function(t){ + */function r(t,e){0}function o(t,e){for(var n in e)t[n]=e[n];return t}var i=/[!'()*]/g,a=function(t){return"%"+t.charCodeAt(0).toString(16)},s=/%2C/g,c=function(t){return encodeURIComponent(t).replace(i,a).replace(s,",")};function u(t){try{return decodeURIComponent(t)}catch(e){0}return t}function l(t,e,n){void 0===e&&(e={});var r,o=n||p;try{r=o(t||"")}catch(s){r={}}for(var i in e){var a=e[i];r[i]=Array.isArray(a)?a.map(f):f(a)}return r}var f=function(t){return null==t||"object"===typeof t?t:String(t)};function p(t){var e={};return t=t.trim().replace(/^(\?|#|&)/,""),t?(t.split("&").forEach((function(t){var n=t.replace(/\+/g," ").split("="),r=u(n.shift()),o=n.length>0?u(n.join("=")):null;void 0===e[r]?e[r]=o:Array.isArray(e[r])?e[r].push(o):e[r]=[e[r],o]})),e):e}function d(t){var e=t?Object.keys(t).map((function(e){var n=t[e];if(void 0===n)return"";if(null===n)return c(e);if(Array.isArray(n)){var r=[];return n.forEach((function(t){void 0!==t&&(null===t?r.push(c(e)):r.push(c(e)+"="+c(t)))})),r.join("&")}return c(e)+"="+c(n)})).filter((function(t){return t.length>0})).join("&"):null;return e?"?"+e:""}var h=/\/?$/;function v(t,e,n,r){var o=r&&r.options.stringifyQuery,i=e.query||{};try{i=m(i)}catch(s){}var a={name:e.name||t&&t.name,meta:t&&t.meta||{},path:e.path||"/",hash:e.hash||"",query:i,params:e.params||{},fullPath:b(e,o),matched:t?y(t):[]};return n&&(a.redirectedFrom=b(n,o)),Object.freeze(a)}function m(t){if(Array.isArray(t))return t.map(m);if(t&&"object"===typeof t){var e={};for(var n in t)e[n]=m(t[n]);return e}return t}var g=v(null,{path:"/"});function y(t){var e=[];while(t)e.unshift(t),t=t.parent;return e}function b(t,e){var n=t.path,r=t.query;void 0===r&&(r={});var o=t.hash;void 0===o&&(o="");var i=e||d;return(n||"/")+i(r)+o}function w(t,e){return e===g?t===e:!!e&&(t.path&&e.path?t.path.replace(h,"")===e.path.replace(h,"")&&t.hash===e.hash&&x(t.query,e.query):!(!t.name||!e.name)&&(t.name===e.name&&t.hash===e.hash&&x(t.query,e.query)&&x(t.params,e.params)))}function x(t,e){if(void 0===t&&(t={}),void 0===e&&(e={}),!t||!e)return t===e;var n=Object.keys(t).sort(),r=Object.keys(e).sort();return n.length===r.length&&n.every((function(n,o){var i=t[n],a=r[o];if(a!==n)return!1;var s=e[n];return null==i||null==s?i===s:"object"===typeof i&&"object"===typeof s?x(i,s):String(i)===String(s)}))}function S(t,e){return 0===t.path.replace(h,"/").indexOf(e.path.replace(h,"/"))&&(!e.hash||t.hash===e.hash)&&O(t.query,e.query)}function O(t,e){for(var n in e)if(!(n in t))return!1;return!0}function _(t){for(var e=0;e=0&&(e=t.slice(r),t=t.slice(0,r));var o=t.indexOf("?");return o>=0&&(n=t.slice(o+1),t=t.slice(0,o)),{path:t,query:n,hash:e}}function T(t){return t.replace(/\/\//g,"/")}var $=Array.isArray||function(t){return"[object Array]"==Object.prototype.toString.call(t)},D=X,N=L,P=z,j=V,I=G,R=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function L(t,e){var n,r=[],o=0,i=0,a="",s=e&&e.delimiter||"/";while(null!=(n=R.exec(t))){var c=n[0],u=n[1],l=n.index;if(a+=t.slice(i,l),i=l+c.length,u)a+=u[1];else{var f=t[i],p=n[2],d=n[3],h=n[4],v=n[5],m=n[6],g=n[7];a&&(r.push(a),a="");var y=null!=p&&null!=f&&f!==p,b="+"===m||"*"===m,w="?"===m||"*"===m,x=n[2]||s,S=h||v;r.push({name:d||o++,prefix:p||"",delimiter:x,optional:w,repeat:b,partial:y,asterisk:!!g,pattern:S?H(S):g?".*":"[^"+q(x)+"]+?"})}}return i1||!_.length)return 0===_.length?t():t("span",{},_)}if("a"===this.tag)O.on=x,O.attrs={href:c,"aria-current":y};else{var k=st(this.$slots.default);if(k){k.isStatic=!1;var C=k.data=o({},k.data);for(var M in C.on=C.on||{},C.on){var E=C.on[M];M in x&&(C.on[M]=Array.isArray(E)?E:[E])}for(var A in x)A in C.on?C.on[A].push(x[A]):C.on[A]=b;var T=k.data.attrs=o({},k.data.attrs);T.href=c,T["aria-current"]=y}else O.on=x}return t(this.tag,O,this.$slots.default)}};function at(t){if(!(t.metaKey||t.altKey||t.ctrlKey||t.shiftKey)&&!t.defaultPrevented&&(void 0===t.button||0===t.button)){if(t.currentTarget&&t.currentTarget.getAttribute){var e=t.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(e))return}return t.preventDefault&&t.preventDefault(),!0}}function st(t){if(t)for(var e,n=0;n-1&&(s.params[p]=n.params[p]);return s.path=Q(u.path,s.params,'named route "'+c+'"'),l(u,s,a)}if(s.path){s.params={};for(var d=0;d=t.length?n():t[o]?e(t[o],(function(){r(o+1)})):r(o+1)};r(0)}var zt={redirected:2,aborted:4,cancelled:8,duplicated:16};function Ft(t,e){return Ht(t,e,zt.redirected,'Redirected when going from "'+t.fullPath+'" to "'+Ut(e)+'" via a navigation guard.')}function Bt(t,e){var n=Ht(t,e,zt.duplicated,'Avoided redundant navigation to current location: "'+t.fullPath+'".');return n.name="NavigationDuplicated",n}function Vt(t,e){return Ht(t,e,zt.cancelled,'Navigation cancelled from "'+t.fullPath+'" to "'+e.fullPath+'" with a new navigation.')}function qt(t,e){return Ht(t,e,zt.aborted,'Navigation aborted from "'+t.fullPath+'" to "'+e.fullPath+'" via a navigation guard.')}function Ht(t,e,n,r){var o=new Error(r);return o._isRouter=!0,o.from=t,o.to=e,o.type=n,o}var Wt=["params","query","hash"];function Ut(t){if("string"===typeof t)return t;if("path"in t)return t.path;var e={};return Wt.forEach((function(n){n in t&&(e[n]=t[n])})),JSON.stringify(e,null,2)}function Kt(t){return Object.prototype.toString.call(t).indexOf("Error")>-1}function Jt(t,e){return Kt(t)&&t._isRouter&&(null==e||t.type===e)}function Yt(t){return function(e,n,r){var o=!1,i=0,a=null;Gt(t,(function(t,e,n,s){if("function"===typeof t&&void 0===t.cid){o=!0,i++;var c,u=te((function(e){Qt(e)&&(e=e.default),t.resolved="function"===typeof e?e:et.extend(e),n.components[s]=e,i--,i<=0&&r()})),l=te((function(t){var e="Failed to resolve async component "+s+": "+t;a||(a=Kt(t)?t:new Error(e),r(a))}));try{c=t(u,l)}catch(p){l(p)}if(c)if("function"===typeof c.then)c.then(u,l);else{var f=c.component;f&&"function"===typeof f.then&&f.then(u,l)}}})),o||r()}}function Gt(t,e){return Xt(t.map((function(t){return Object.keys(t.components).map((function(n){return e(t.components[n],t.instances[n],t,n)}))})))}function Xt(t){return Array.prototype.concat.apply([],t)}var Zt="function"===typeof Symbol&&"symbol"===typeof Symbol.toStringTag;function Qt(t){return t.__esModule||Zt&&"Module"===t[Symbol.toStringTag]}function te(t){var e=!1;return function(){var n=[],r=arguments.length;while(r--)n[r]=arguments[r];if(!e)return e=!0,t.apply(this,n)}}var ee=function(t,e){this.router=t,this.base=ne(e),this.current=g,this.pending=null,this.ready=!1,this.readyCbs=[],this.readyErrorCbs=[],this.errorCbs=[],this.listeners=[]};function ne(t){if(!t)if(ut){var e=document.querySelector("base");t=e&&e.getAttribute("href")||"/",t=t.replace(/^https?:\/\/[^\/]+/,"")}else t="/";return"/"!==t.charAt(0)&&(t="/"+t),t.replace(/\/$/,"")}function re(t,e){var n,r=Math.max(t.length,e.length);for(n=0;n0)){var e=this.router,n=e.options.scrollBehavior,r=jt&&n;r&&this.listeners.push(Ot());var o=function(){var n=t.current,o=pe(t.base);t.current===g&&o===t._startLocation||t.transitionTo(o,(function(t){r&&_t(e,t,n,!0)}))};window.addEventListener("popstate",o),this.listeners.push((function(){window.removeEventListener("popstate",o)}))}},e.prototype.go=function(t){window.history.go(t)},e.prototype.push=function(t,e,n){var r=this,o=this,i=o.current;this.transitionTo(t,(function(t){It(T(r.base+t.fullPath)),_t(r.router,t,i,!1),e&&e(t)}),n)},e.prototype.replace=function(t,e,n){var r=this,o=this,i=o.current;this.transitionTo(t,(function(t){Rt(T(r.base+t.fullPath)),_t(r.router,t,i,!1),e&&e(t)}),n)},e.prototype.ensureURL=function(t){if(pe(this.base)!==this.current.fullPath){var e=T(this.base+this.current.fullPath);t?It(e):Rt(e)}},e.prototype.getCurrentLocation=function(){return pe(this.base)},e}(ee);function pe(t){var e=window.location.pathname;return t&&0===e.toLowerCase().indexOf(t.toLowerCase())&&(e=e.slice(t.length)),(e||"/")+window.location.search+window.location.hash}var de=function(t){function e(e,n,r){t.call(this,e,n),r&&he(this.base)||ve()}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.setupListeners=function(){var t=this;if(!(this.listeners.length>0)){var e=this.router,n=e.options.scrollBehavior,r=jt&&n;r&&this.listeners.push(Ot());var o=function(){var e=t.current;ve()&&t.transitionTo(me(),(function(n){r&&_t(t.router,n,e,!0),jt||be(n.fullPath)}))},i=jt?"popstate":"hashchange";window.addEventListener(i,o),this.listeners.push((function(){window.removeEventListener(i,o)}))}},e.prototype.push=function(t,e,n){var r=this,o=this,i=o.current;this.transitionTo(t,(function(t){ye(t.fullPath),_t(r.router,t,i,!1),e&&e(t)}),n)},e.prototype.replace=function(t,e,n){var r=this,o=this,i=o.current;this.transitionTo(t,(function(t){be(t.fullPath),_t(r.router,t,i,!1),e&&e(t)}),n)},e.prototype.go=function(t){window.history.go(t)},e.prototype.ensureURL=function(t){var e=this.current.fullPath;me()!==e&&(t?ye(e):be(e))},e.prototype.getCurrentLocation=function(){return me()},e}(ee);function he(t){var e=pe(t);if(!/^\/#/.test(e))return window.location.replace(T(t+"/#"+e)),!0}function ve(){var t=me();return"/"===t.charAt(0)||(be("/"+t),!1)}function me(){var t=window.location.href,e=t.indexOf("#");return e<0?"":(t=t.slice(e+1),t)}function ge(t){var e=window.location.href,n=e.indexOf("#"),r=n>=0?e.slice(0,n):e;return r+"#"+t}function ye(t){jt?It(ge(t)):window.location.hash=t}function be(t){jt?Rt(ge(t)):window.location.replace(ge(t))}var we=function(t){function e(e,n){t.call(this,e,n),this.stack=[],this.index=-1}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.push=function(t,e,n){var r=this;this.transitionTo(t,(function(t){r.stack=r.stack.slice(0,r.index+1).concat(t),r.index++,e&&e(t)}),n)},e.prototype.replace=function(t,e,n){var r=this;this.transitionTo(t,(function(t){r.stack=r.stack.slice(0,r.index).concat(t),e&&e(t)}),n)},e.prototype.go=function(t){var e=this,n=this.index+t;if(!(n<0||n>=this.stack.length)){var r=this.stack[n];this.confirmTransition(r,(function(){var t=e.current;e.index=n,e.updateRoute(r),e.router.afterHooks.forEach((function(e){e&&e(r,t)}))}),(function(t){Jt(t,zt.duplicated)&&(e.index=n)}))}},e.prototype.getCurrentLocation=function(){var t=this.stack[this.stack.length-1];return t?t.fullPath:"/"},e.prototype.ensureURL=function(){},e}(ee),xe=function(t){void 0===t&&(t={}),this.app=null,this.apps=[],this.options=t,this.beforeHooks=[],this.resolveHooks=[],this.afterHooks=[],this.matcher=ht(t.routes||[],this);var e=t.mode||"hash";switch(this.fallback="history"===e&&!jt&&!1!==t.fallback,this.fallback&&(e="hash"),ut||(e="abstract"),this.mode=e,e){case"history":this.history=new fe(this,t.base);break;case"hash":this.history=new de(this,t.base,this.fallback);break;case"abstract":this.history=new we(this,t.base);break;default:0}},Se={currentRoute:{configurable:!0}};function Oe(t,e){return t.push(e),function(){var n=t.indexOf(e);n>-1&&t.splice(n,1)}}function _e(t,e,n){var r="hash"===n?"#"+e:e;return t?T(t+"/"+r):r}xe.prototype.match=function(t,e,n){return this.matcher.match(t,e,n)},Se.currentRoute.get=function(){return this.history&&this.history.current},xe.prototype.init=function(t){var e=this;if(this.apps.push(t),t.$once("hook:destroyed",(function(){var n=e.apps.indexOf(t);n>-1&&e.apps.splice(n,1),e.app===t&&(e.app=e.apps[0]||null),e.app||e.history.teardown()})),!this.app){this.app=t;var n=this.history;if(n instanceof fe||n instanceof de){var r=function(t){var r=n.current,o=e.options.scrollBehavior,i=jt&&o;i&&"fullPath"in t&&_t(e,t,r,!1)},o=function(t){n.setupListeners(),r(t)};n.transitionTo(n.getCurrentLocation(),o,o)}n.listen((function(t){e.apps.forEach((function(e){e._route=t}))}))}},xe.prototype.beforeEach=function(t){return Oe(this.beforeHooks,t)},xe.prototype.beforeResolve=function(t){return Oe(this.resolveHooks,t)},xe.prototype.afterEach=function(t){return Oe(this.afterHooks,t)},xe.prototype.onReady=function(t,e){this.history.onReady(t,e)},xe.prototype.onError=function(t){this.history.onError(t)},xe.prototype.push=function(t,e,n){var r=this;if(!e&&!n&&"undefined"!==typeof Promise)return new Promise((function(e,n){r.history.push(t,e,n)}));this.history.push(t,e,n)},xe.prototype.replace=function(t,e,n){var r=this;if(!e&&!n&&"undefined"!==typeof Promise)return new Promise((function(e,n){r.history.replace(t,e,n)}));this.history.replace(t,e,n)},xe.prototype.go=function(t){this.history.go(t)},xe.prototype.back=function(){this.go(-1)},xe.prototype.forward=function(){this.go(1)},xe.prototype.getMatchedComponents=function(t){var e=t?t.matched?t:this.resolve(t).route:this.currentRoute;return e?[].concat.apply([],e.matched.map((function(t){return Object.keys(t.components).map((function(e){return t.components[e]}))}))):[]},xe.prototype.resolve=function(t,e,n){e=e||this.history.current;var r=tt(t,e,n,this),o=this.match(r,e),i=o.redirectedFrom||o.fullPath,a=this.history.base,s=_e(a,i,this.mode);return{location:r,route:o,href:s,normalizedTo:r,resolved:o}},xe.prototype.addRoutes=function(t){this.matcher.addRoutes(t),this.history.current!==g&&this.history.transitionTo(this.history.getCurrentLocation())},Object.defineProperties(xe.prototype,Se),xe.install=ct,xe.version="3.4.9",xe.isNavigationFailure=Jt,xe.NavigationFailureType=zt,ut&&window.Vue&&window.Vue.use(xe),e["a"]=xe},"90e3":function(t,e){var n=0,r=Math.random();t.exports=function(t){return"Symbol("+String(void 0===t?"":t)+")_"+(++n+r).toString(36)}},9112:function(t,e,n){var r=n("83ab"),o=n("9bf2"),i=n("5c6c");t.exports=r?function(t,e,n){return o.f(t,e,i(1,n))}:function(t,e,n){return t[e]=n,t}},"91d3":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var r=n("78ef"),o=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:":";return(0,r.withParams)({type:"macAddress"},(function(e){if(!(0,r.req)(e))return!0;if("string"!==typeof e)return!1;var n="string"===typeof t&&""!==t?e.split(t):12===e.length||16===e.length?e.match(/.{2}/g):null;return null!==n&&(6===n.length||8===n.length)&&n.every(i)}))};e.default=o;var i=function(t){return t.toLowerCase().match(/^[0-9a-f]{2}$/)}},9263:function(t,e,n){"use strict";var r=n("ad6d"),o=n("9f7f"),i=RegExp.prototype.exec,a=String.prototype.replace,s=i,c=function(){var t=/a/,e=/b*/g;return i.call(t,"a"),i.call(e,"a"),0!==t.lastIndex||0!==e.lastIndex}(),u=o.UNSUPPORTED_Y||o.BROKEN_CARET,l=void 0!==/()??/.exec("")[1],f=c||l||u;f&&(s=function(t){var e,n,o,s,f=this,p=u&&f.sticky,d=r.call(f),h=f.source,v=0,m=t;return p&&(d=d.replace("y",""),-1===d.indexOf("g")&&(d+="g"),m=String(t).slice(f.lastIndex),f.lastIndex>0&&(!f.multiline||f.multiline&&"\n"!==t[f.lastIndex-1])&&(h="(?: "+h+")",m=" "+m,v++),n=new RegExp("^(?:"+h+")",d)),l&&(n=new RegExp("^"+h+"$(?!\\s)",d)),c&&(e=f.lastIndex),o=i.call(p?n:f,m),p?o?(o.input=o.input.slice(v),o[0]=o[0].slice(v),o.index=f.lastIndex,f.lastIndex+=o[0].length):f.lastIndex=0:c&&o&&(f.lastIndex=f.global?o.index+o[0].length:e),l&&o&&o.length>1&&a.call(o[0],n,(function(){for(s=1;s=0&&Math.floor(e)===e&&isFinite(t)}function p(t){return o(t)&&"function"===typeof t.then&&"function"===typeof t.catch}function h(t){return null==t?"":Array.isArray(t)||l(t)&&t.toString===u?JSON.stringify(t,null,2):String(t)}function v(t){var e=parseFloat(t);return isNaN(e)?t:e}function g(t,e){for(var n=Object.create(null),r=t.split(","),o=0;o-1)return t.splice(n,1)}}var w=Object.prototype.hasOwnProperty;function _(t,e){return w.call(t,e)}function x(t){var e=Object.create(null);return function(n){var r=e[n];return r||(e[n]=t(n))}}var S=/-(\w)/g,O=x((function(t){return t.replace(S,(function(t,e){return e?e.toUpperCase():""}))})),E=x((function(t){return t.charAt(0).toUpperCase()+t.slice(1)})),C=/\B([A-Z])/g,A=x((function(t){return t.replace(C,"-$1").toLowerCase()}));function $(t,e){function n(n){var r=arguments.length;return r?r>1?t.apply(e,arguments):t.call(e,n):t.call(e)}return n._length=t.length,n}function k(t,e){return t.bind(e)}var M=Function.prototype.bind?k:$;function T(t,e){e=e||0;var n=t.length-e,r=new Array(n);while(n--)r[n]=t[n+e];return r}function j(t,e){for(var n in e)t[n]=e[n];return t}function P(t){for(var e={},n=0;n0,ot=et&&et.indexOf("edge/")>0,it=(et&&et.indexOf("android"),et&&/iphone|ipad|ipod|ios/.test(et)||"ios"===tt),at=(et&&/chrome\/\d+/.test(et),et&&/phantomjs/.test(et),et&&et.match(/firefox\/(\d+)/)),st={}.watch,ct=!1;if(Z)try{var ut={};Object.defineProperty(ut,"passive",{get:function(){ct=!0}}),window.addEventListener("test-passive",null,ut)}catch(Ju){}var lt=function(){return void 0===X&&(X=!Z&&!Q&&"undefined"!==typeof t&&(t["process"]&&"server"===t["process"].env.VUE_ENV)),X},ft=Z&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function dt(t){return"function"===typeof t&&/native code/.test(t.toString())}var pt,ht="undefined"!==typeof Symbol&&dt(Symbol)&&"undefined"!==typeof Reflect&&dt(Reflect.ownKeys);pt="undefined"!==typeof Set&&dt(Set)?Set:function(){function t(){this.set=Object.create(null)}return t.prototype.has=function(t){return!0===this.set[t]},t.prototype.add=function(t){this.set[t]=!0},t.prototype.clear=function(){this.set=Object.create(null)},t}();var vt=D,gt=0,mt=function(){this.id=gt++,this.subs=[]};mt.prototype.addSub=function(t){this.subs.push(t)},mt.prototype.removeSub=function(t){b(this.subs,t)},mt.prototype.depend=function(){mt.target&&mt.target.addDep(this)},mt.prototype.notify=function(){var t=this.subs.slice();for(var e=0,n=t.length;e-1)if(i&&!_(o,"default"))a=!1;else if(""===a||a===A(t)){var c=ne(String,o.type);(c<0||s0&&(a=ke(a,(e||"")+"_"+n),$e(a[0])&&$e(u)&&(l[c]=Ot(u.text+a[0].text),a.shift()),l.push.apply(l,a)):s(a)?$e(u)?l[c]=Ot(u.text+a):""!==a&&l.push(Ot(a)):$e(a)&&$e(u)?l[c]=Ot(u.text+a.text):(i(t._isVList)&&o(a.tag)&&r(a.key)&&o(e)&&(a.key="__vlist"+e+"_"+n+"__"),l.push(a)));return l}function Me(t){var e=t.$options.provide;e&&(t._provided="function"===typeof e?e.call(t):e)}function Te(t){var e=je(t.$options.inject,t);e&&(Tt(!1),Object.keys(e).forEach((function(n){Lt(t,n,e[n])})),Tt(!0))}function je(t,e){if(t){for(var n=Object.create(null),r=ht?Reflect.ownKeys(t):Object.keys(t),o=0;o0,a=t?!!t.$stable:!i,s=t&&t.$key;if(t){if(t._normalized)return t._normalized;if(a&&r&&r!==n&&s===r.$key&&!i&&!r.$hasNormal)return r;for(var c in o={},t)t[c]&&"$"!==c[0]&&(o[c]=Le(e,c,t[c]))}else o={};for(var u in e)u in o||(o[u]=Ne(e,u));return t&&Object.isExtensible(t)&&(t._normalized=o),G(o,"$stable",a),G(o,"$key",s),G(o,"$hasNormal",i),o}function Le(t,e,n){var r=function(){var t=arguments.length?n.apply(null,arguments):n({});return t=t&&"object"===typeof t&&!Array.isArray(t)?[t]:Ae(t),t&&(0===t.length||1===t.length&&t[0].isComment)?void 0:t};return n.proxy&&Object.defineProperty(t,e,{get:r,enumerable:!0,configurable:!0}),r}function Ne(t,e){return function(){return t[e]}}function Re(t,e){var n,r,i,a,s;if(Array.isArray(t)||"string"===typeof t)for(n=new Array(t.length),r=0,i=t.length;r1?T(n):n;for(var r=T(arguments,1),o='event handler for "'+t+'"',i=0,a=n.length;idocument.createEvent("Event").timeStamp&&(Xn=function(){return Jn.now()})}function Zn(){var t,e;for(Kn=Xn(),qn=!0,Hn.sort((function(t,e){return t.id-e.id})),Gn=0;GnGn&&Hn[n].id>t.id)n--;Hn.splice(n+1,0,t)}else Hn.push(t);Yn||(Yn=!0,ge(Zn))}}var rr=0,or=function(t,e,n,r,o){this.vm=t,o&&(t._watcher=this),t._watchers.push(this),r?(this.deep=!!r.deep,this.user=!!r.user,this.lazy=!!r.lazy,this.sync=!!r.sync,this.before=r.before):this.deep=this.user=this.lazy=this.sync=!1,this.cb=n,this.id=++rr,this.active=!0,this.dirty=this.lazy,this.deps=[],this.newDeps=[],this.depIds=new pt,this.newDepIds=new pt,this.expression="","function"===typeof e?this.getter=e:(this.getter=K(e),this.getter||(this.getter=D)),this.value=this.lazy?void 0:this.get()};or.prototype.get=function(){var t;bt(this);var e=this.vm;try{t=this.getter.call(e,e)}catch(Ju){if(!this.user)throw Ju;re(Ju,e,'getter for watcher "'+this.expression+'"')}finally{this.deep&&ye(t),wt(),this.cleanupDeps()}return t},or.prototype.addDep=function(t){var e=t.id;this.newDepIds.has(e)||(this.newDepIds.add(e),this.newDeps.push(t),this.depIds.has(e)||t.addSub(this))},or.prototype.cleanupDeps=function(){var t=this.deps.length;while(t--){var e=this.deps[t];this.newDepIds.has(e.id)||e.removeSub(this)}var n=this.depIds;this.depIds=this.newDepIds,this.newDepIds=n,this.newDepIds.clear(),n=this.deps,this.deps=this.newDeps,this.newDeps=n,this.newDeps.length=0},or.prototype.update=function(){this.lazy?this.dirty=!0:this.sync?this.run():nr(this)},or.prototype.run=function(){if(this.active){var t=this.get();if(t!==this.value||c(t)||this.deep){var e=this.value;if(this.value=t,this.user)try{this.cb.call(this.vm,t,e)}catch(Ju){re(Ju,this.vm,'callback for watcher "'+this.expression+'"')}else this.cb.call(this.vm,t,e)}}},or.prototype.evaluate=function(){this.value=this.get(),this.dirty=!1},or.prototype.depend=function(){var t=this.deps.length;while(t--)this.deps[t].depend()},or.prototype.teardown=function(){if(this.active){this.vm._isBeingDestroyed||b(this.vm._watchers,this);var t=this.deps.length;while(t--)this.deps[t].removeSub(this);this.active=!1}};var ir={enumerable:!0,configurable:!0,get:D,set:D};function ar(t,e,n){ir.get=function(){return this[e][n]},ir.set=function(t){this[e][n]=t},Object.defineProperty(t,n,ir)}function sr(t){t._watchers=[];var e=t.$options;e.props&&cr(t,e.props),e.methods&&gr(t,e.methods),e.data?ur(t):It(t._data={},!0),e.computed&&dr(t,e.computed),e.watch&&e.watch!==st&&mr(t,e.watch)}function cr(t,e){var n=t.$options.propsData||{},r=t._props={},o=t.$options._propKeys=[],i=!t.$parent;i||Tt(!1);var a=function(i){o.push(i);var a=Zt(i,e,n,t);Lt(r,i,a),i in t||ar(t,"_props",i)};for(var s in e)a(s);Tt(!0)}function ur(t){var e=t.$options.data;e=t._data="function"===typeof e?lr(e,t):e||{},l(e)||(e={});var n=Object.keys(e),r=t.$options.props,o=(t.$options.methods,n.length);while(o--){var i=n[o];0,r&&_(r,i)||q(i)||ar(t,"_data",i)}It(e,!0)}function lr(t,e){bt();try{return t.call(e,e)}catch(Ju){return re(Ju,e,"data()"),{}}finally{wt()}}var fr={lazy:!0};function dr(t,e){var n=t._computedWatchers=Object.create(null),r=lt();for(var o in e){var i=e[o],a="function"===typeof i?i:i.get;0,r||(n[o]=new or(t,a||D,D,fr)),o in t||pr(t,o,i)}}function pr(t,e,n){var r=!lt();"function"===typeof n?(ir.get=r?hr(e):vr(n),ir.set=D):(ir.get=n.get?r&&!1!==n.cache?hr(e):vr(n.get):D,ir.set=n.set||D),Object.defineProperty(t,e,ir)}function hr(t){return function(){var e=this._computedWatchers&&this._computedWatchers[t];if(e)return e.dirty&&e.evaluate(),mt.target&&e.depend(),e.value}}function vr(t){return function(){return t.call(this,this)}}function gr(t,e){t.$options.props;for(var n in e)t[n]="function"!==typeof e[n]?D:M(e[n],t)}function mr(t,e){for(var n in e){var r=e[n];if(Array.isArray(r))for(var o=0;o-1)return this;var n=T(arguments,1);return n.unshift(this),"function"===typeof t.install?t.install.apply(t,n):"function"===typeof t&&t.apply(null,n),e.push(t),this}}function Ar(t){t.mixin=function(t){return this.options=Xt(this.options,t),this}}function $r(t){t.cid=0;var e=1;t.extend=function(t){t=t||{};var n=this,r=n.cid,o=t._Ctor||(t._Ctor={});if(o[r])return o[r];var i=t.name||n.options.name;var a=function(t){this._init(t)};return a.prototype=Object.create(n.prototype),a.prototype.constructor=a,a.cid=e++,a.options=Xt(n.options,t),a["super"]=n,a.options.props&&kr(a),a.options.computed&&Mr(a),a.extend=n.extend,a.mixin=n.mixin,a.use=n.use,H.forEach((function(t){a[t]=n[t]})),i&&(a.options.components[i]=a),a.superOptions=n.options,a.extendOptions=t,a.sealedOptions=j({},a.options),o[r]=a,a}}function kr(t){var e=t.options.props;for(var n in e)ar(t.prototype,"_props",n)}function Mr(t){var e=t.options.computed;for(var n in e)pr(t.prototype,n,e[n])}function Tr(t){H.forEach((function(e){t[e]=function(t,n){return n?("component"===e&&l(n)&&(n.name=n.name||t,n=this.options._base.extend(n)),"directive"===e&&"function"===typeof n&&(n={bind:n,update:n}),this.options[e+"s"][t]=n,n):this.options[e+"s"][t]}}))}function jr(t){return t&&(t.Ctor.options.name||t.tag)}function Pr(t,e){return Array.isArray(t)?t.indexOf(e)>-1:"string"===typeof t?t.split(",").indexOf(e)>-1:!!f(t)&&t.test(e)}function Dr(t,e){var n=t.cache,r=t.keys,o=t._vnode;for(var i in n){var a=n[i];if(a){var s=jr(a.componentOptions);s&&!e(s)&&Ir(n,i,r,o)}}}function Ir(t,e,n,r){var o=t[e];!o||r&&o.tag===r.tag||o.componentInstance.$destroy(),t[e]=null,b(n,e)}_r(Er),br(Er),Tn(Er),In(Er),wn(Er);var Lr=[String,RegExp,Array],Nr={name:"keep-alive",abstract:!0,props:{include:Lr,exclude:Lr,max:[String,Number]},created:function(){this.cache=Object.create(null),this.keys=[]},destroyed:function(){for(var t in this.cache)Ir(this.cache,t,this.keys)},mounted:function(){var t=this;this.$watch("include",(function(e){Dr(t,(function(t){return Pr(e,t)}))})),this.$watch("exclude",(function(e){Dr(t,(function(t){return!Pr(e,t)}))}))},render:function(){var t=this.$slots.default,e=En(t),n=e&&e.componentOptions;if(n){var r=jr(n),o=this,i=o.include,a=o.exclude;if(i&&(!r||!Pr(i,r))||a&&r&&Pr(a,r))return e;var s=this,c=s.cache,u=s.keys,l=null==e.key?n.Ctor.cid+(n.tag?"::"+n.tag:""):e.key;c[l]?(e.componentInstance=c[l].componentInstance,b(u,l),u.push(l)):(c[l]=e,u.push(l),this.max&&u.length>parseInt(this.max)&&Ir(c,u[0],u,this._vnode)),e.data.keepAlive=!0}return e||t&&t[0]}},Rr={KeepAlive:Nr};function Fr(t){var e={get:function(){return V}};Object.defineProperty(t,"config",e),t.util={warn:vt,extend:j,mergeOptions:Xt,defineReactive:Lt},t.set=Nt,t.delete=Rt,t.nextTick=ge,t.observable=function(t){return It(t),t},t.options=Object.create(null),H.forEach((function(e){t.options[e+"s"]=Object.create(null)})),t.options._base=t,j(t.options.components,Rr),Cr(t),Ar(t),$r(t),Tr(t)}Fr(Er),Object.defineProperty(Er.prototype,"$isServer",{get:lt}),Object.defineProperty(Er.prototype,"$ssrContext",{get:function(){return this.$vnode&&this.$vnode.ssrContext}}),Object.defineProperty(Er,"FunctionalRenderContext",{value:Qe}),Er.version="2.6.11";var zr=g("style,class"),Ur=g("input,textarea,option,select,progress"),Hr=function(t,e,n){return"value"===n&&Ur(t)&&"button"!==e||"selected"===n&&"option"===t||"checked"===n&&"input"===t||"muted"===n&&"video"===t},Br=g("contenteditable,draggable,spellcheck"),Vr=g("events,caret,typing,plaintext-only"),Yr=function(t,e){return Xr(e)||"false"===e?"false":"contenteditable"===t&&Vr(e)?e:"true"},qr=g("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,translate,truespeed,typemustmatch,visible"),Gr="http://www.w3.org/1999/xlink",Wr=function(t){return":"===t.charAt(5)&&"xlink"===t.slice(0,5)},Kr=function(t){return Wr(t)?t.slice(6,t.length):""},Xr=function(t){return null==t||!1===t};function Jr(t){var e=t.data,n=t,r=t;while(o(r.componentInstance))r=r.componentInstance._vnode,r&&r.data&&(e=Zr(r.data,e));while(o(n=n.parent))n&&n.data&&(e=Zr(e,n.data));return Qr(e.staticClass,e.class)}function Zr(t,e){return{staticClass:to(t.staticClass,e.staticClass),class:o(t.class)?[t.class,e.class]:e.class}}function Qr(t,e){return o(t)||o(e)?to(t,eo(e)):""}function to(t,e){return t?e?t+" "+e:t:e||""}function eo(t){return Array.isArray(t)?no(t):c(t)?ro(t):"string"===typeof t?t:""}function no(t){for(var e,n="",r=0,i=t.length;r-1?lo[t]=e.constructor===window.HTMLUnknownElement||e.constructor===window.HTMLElement:lo[t]=/HTMLUnknownElement/.test(e.toString())}var po=g("text,number,password,search,email,tel,url");function ho(t){if("string"===typeof t){var e=document.querySelector(t);return e||document.createElement("div")}return t}function vo(t,e){var n=document.createElement(t);return"select"!==t?n:(e.data&&e.data.attrs&&void 0!==e.data.attrs.multiple&&n.setAttribute("multiple","multiple"),n)}function go(t,e){return document.createElementNS(oo[t],e)}function mo(t){return document.createTextNode(t)}function yo(t){return document.createComment(t)}function bo(t,e,n){t.insertBefore(e,n)}function wo(t,e){t.removeChild(e)}function _o(t,e){t.appendChild(e)}function xo(t){return t.parentNode}function So(t){return t.nextSibling}function Oo(t){return t.tagName}function Eo(t,e){t.textContent=e}function Co(t,e){t.setAttribute(e,"")}var Ao=Object.freeze({createElement:vo,createElementNS:go,createTextNode:mo,createComment:yo,insertBefore:bo,removeChild:wo,appendChild:_o,parentNode:xo,nextSibling:So,tagName:Oo,setTextContent:Eo,setStyleScope:Co}),$o={create:function(t,e){ko(e)},update:function(t,e){t.data.ref!==e.data.ref&&(ko(t,!0),ko(e))},destroy:function(t){ko(t,!0)}};function ko(t,e){var n=t.data.ref;if(o(n)){var r=t.context,i=t.componentInstance||t.elm,a=r.$refs;e?Array.isArray(a[n])?b(a[n],i):a[n]===i&&(a[n]=void 0):t.data.refInFor?Array.isArray(a[n])?a[n].indexOf(i)<0&&a[n].push(i):a[n]=[i]:a[n]=i}}var Mo=new _t("",{},[]),To=["create","activate","update","remove","destroy"];function jo(t,e){return t.key===e.key&&(t.tag===e.tag&&t.isComment===e.isComment&&o(t.data)===o(e.data)&&Po(t,e)||i(t.isAsyncPlaceholder)&&t.asyncFactory===e.asyncFactory&&r(e.asyncFactory.error))}function Po(t,e){if("input"!==t.tag)return!0;var n,r=o(n=t.data)&&o(n=n.attrs)&&n.type,i=o(n=e.data)&&o(n=n.attrs)&&n.type;return r===i||po(r)&&po(i)}function Do(t,e,n){var r,i,a={};for(r=e;r<=n;++r)i=t[r].key,o(i)&&(a[i]=r);return a}function Io(t){var e,n,a={},c=t.modules,u=t.nodeOps;for(e=0;ev?(f=r(n[y+1])?null:n[y+1].elm,S(t,f,n,h,y,i)):h>y&&E(e,d,v)}function $(t,e,n,r){for(var i=n;i-1?qo(t,e,n):qr(e)?Xr(n)?t.removeAttribute(e):(n="allowfullscreen"===e&&"EMBED"===t.tagName?"true":e,t.setAttribute(e,n)):Br(e)?t.setAttribute(e,Yr(e,n)):Wr(e)?Xr(n)?t.removeAttributeNS(Gr,Kr(e)):t.setAttributeNS(Gr,e,n):qo(t,e,n)}function qo(t,e,n){if(Xr(n))t.removeAttribute(e);else{if(nt&&!rt&&"TEXTAREA"===t.tagName&&"placeholder"===e&&""!==n&&!t.__ieph){var r=function(e){e.stopImmediatePropagation(),t.removeEventListener("input",r)};t.addEventListener("input",r),t.__ieph=!0}t.setAttribute(e,n)}}var Go={create:Vo,update:Vo};function Wo(t,e){var n=e.elm,i=e.data,a=t.data;if(!(r(i.staticClass)&&r(i.class)&&(r(a)||r(a.staticClass)&&r(a.class)))){var s=Jr(e),c=n._transitionClasses;o(c)&&(s=to(s,eo(c))),s!==n._prevClass&&(n.setAttribute("class",s),n._prevClass=s)}}var Ko,Xo,Jo,Zo,Qo,ti,ei={create:Wo,update:Wo},ni=/[\w).+\-_$\]]/;function ri(t){var e,n,r,o,i,a=!1,s=!1,c=!1,u=!1,l=0,f=0,d=0,p=0;for(r=0;r=0;h--)if(v=t.charAt(h)," "!==v)break;v&&ni.test(v)||(u=!0)}}else void 0===o?(p=r+1,o=t.slice(0,r).trim()):g();function g(){(i||(i=[])).push(t.slice(p,r).trim()),p=r+1}if(void 0===o?o=t.slice(0,r).trim():0!==p&&g(),i)for(r=0;r-1?{exp:t.slice(0,Zo),key:'"'+t.slice(Zo+1)+'"'}:{exp:t,key:null};Xo=t,Zo=Qo=ti=0;while(!xi())Jo=_i(),Si(Jo)?Ei(Jo):91===Jo&&Oi(Jo);return{exp:t.slice(0,Qo),key:t.slice(Qo+1,ti)}}function _i(){return Xo.charCodeAt(++Zo)}function xi(){return Zo>=Ko}function Si(t){return 34===t||39===t}function Oi(t){var e=1;Qo=Zo;while(!xi())if(t=_i(),Si(t))Ei(t);else if(91===t&&e++,93===t&&e--,0===e){ti=Zo;break}}function Ei(t){var e=t;while(!xi())if(t=_i(),t===e)break}var Ci,Ai="__r",$i="__c";function ki(t,e,n){n;var r=e.value,o=e.modifiers,i=t.tag,a=t.attrsMap.type;if(t.component)return yi(t,r,o),!1;if("select"===i)ji(t,r,o);else if("input"===i&&"checkbox"===a)Mi(t,r,o);else if("input"===i&&"radio"===a)Ti(t,r,o);else if("input"===i||"textarea"===i)Pi(t,r,o);else{if(!V.isReservedTag(i))return yi(t,r,o),!1}return!0}function Mi(t,e,n){var r=n&&n.number,o=hi(t,"value")||"null",i=hi(t,"true-value")||"true",a=hi(t,"false-value")||"false";si(t,"checked","Array.isArray("+e+")?_i("+e+","+o+")>-1"+("true"===i?":("+e+")":":_q("+e+","+i+")")),di(t,"change","var $$a="+e+",$$el=$event.target,$$c=$$el.checked?("+i+"):("+a+");if(Array.isArray($$a)){var $$v="+(r?"_n("+o+")":o)+",$$i=_i($$a,$$v);if($$el.checked){$$i<0&&("+bi(e,"$$a.concat([$$v])")+")}else{$$i>-1&&("+bi(e,"$$a.slice(0,$$i).concat($$a.slice($$i+1))")+")}}else{"+bi(e,"$$c")+"}",null,!0)}function Ti(t,e,n){var r=n&&n.number,o=hi(t,"value")||"null";o=r?"_n("+o+")":o,si(t,"checked","_q("+e+","+o+")"),di(t,"change",bi(e,o),null,!0)}function ji(t,e,n){var r=n&&n.number,o='Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = "_value" in o ? o._value : o.value;return '+(r?"_n(val)":"val")+"})",i="$event.target.multiple ? $$selectedVal : $$selectedVal[0]",a="var $$selectedVal = "+o+";";a=a+" "+bi(e,i),di(t,"change",a,null,!0)}function Pi(t,e,n){var r=t.attrsMap.type,o=n||{},i=o.lazy,a=o.number,s=o.trim,c=!i&&"range"!==r,u=i?"change":"range"===r?Ai:"input",l="$event.target.value";s&&(l="$event.target.value.trim()"),a&&(l="_n("+l+")");var f=bi(e,l);c&&(f="if($event.target.composing)return;"+f),si(t,"value","("+e+")"),di(t,u,f,null,!0),(s||a)&&di(t,"blur","$forceUpdate()")}function Di(t){if(o(t[Ai])){var e=nt?"change":"input";t[e]=[].concat(t[Ai],t[e]||[]),delete t[Ai]}o(t[$i])&&(t.change=[].concat(t[$i],t.change||[]),delete t[$i])}function Ii(t,e,n){var r=Ci;return function o(){var i=e.apply(null,arguments);null!==i&&Ri(t,o,n,r)}}var Li=ce&&!(at&&Number(at[1])<=53);function Ni(t,e,n,r){if(Li){var o=Kn,i=e;e=i._wrapper=function(t){if(t.target===t.currentTarget||t.timeStamp>=o||t.timeStamp<=0||t.target.ownerDocument!==document)return i.apply(this,arguments)}}Ci.addEventListener(t,e,ct?{capture:n,passive:r}:n)}function Ri(t,e,n,r){(r||Ci).removeEventListener(t,e._wrapper||e,n)}function Fi(t,e){if(!r(t.data.on)||!r(e.data.on)){var n=e.data.on||{},o=t.data.on||{};Ci=e.elm,Di(n),xe(n,o,Ni,Ri,Ii,e.context),Ci=void 0}}var zi,Ui={create:Fi,update:Fi};function Hi(t,e){if(!r(t.data.domProps)||!r(e.data.domProps)){var n,i,a=e.elm,s=t.data.domProps||{},c=e.data.domProps||{};for(n in o(c.__ob__)&&(c=e.data.domProps=j({},c)),s)n in c||(a[n]="");for(n in c){if(i=c[n],"textContent"===n||"innerHTML"===n){if(e.children&&(e.children.length=0),i===s[n])continue;1===a.childNodes.length&&a.removeChild(a.childNodes[0])}if("value"===n&&"PROGRESS"!==a.tagName){a._value=i;var u=r(i)?"":String(i);Bi(a,u)&&(a.value=u)}else if("innerHTML"===n&&ao(a.tagName)&&r(a.innerHTML)){zi=zi||document.createElement("div"),zi.innerHTML=""+i+"";var l=zi.firstChild;while(a.firstChild)a.removeChild(a.firstChild);while(l.firstChild)a.appendChild(l.firstChild)}else if(i!==s[n])try{a[n]=i}catch(Ju){}}}}function Bi(t,e){return!t.composing&&("OPTION"===t.tagName||Vi(t,e)||Yi(t,e))}function Vi(t,e){var n=!0;try{n=document.activeElement!==t}catch(Ju){}return n&&t.value!==e}function Yi(t,e){var n=t.value,r=t._vModifiers;if(o(r)){if(r.number)return v(n)!==v(e);if(r.trim)return n.trim()!==e.trim()}return n!==e}var qi={create:Hi,update:Hi},Gi=x((function(t){var e={},n=/;(?![^(]*\))/g,r=/:(.+)/;return t.split(n).forEach((function(t){if(t){var n=t.split(r);n.length>1&&(e[n[0].trim()]=n[1].trim())}})),e}));function Wi(t){var e=Ki(t.style);return t.staticStyle?j(t.staticStyle,e):e}function Ki(t){return Array.isArray(t)?P(t):"string"===typeof t?Gi(t):t}function Xi(t,e){var n,r={};if(e){var o=t;while(o.componentInstance)o=o.componentInstance._vnode,o&&o.data&&(n=Wi(o.data))&&j(r,n)}(n=Wi(t.data))&&j(r,n);var i=t;while(i=i.parent)i.data&&(n=Wi(i.data))&&j(r,n);return r}var Ji,Zi=/^--/,Qi=/\s*!important$/,ta=function(t,e,n){if(Zi.test(e))t.style.setProperty(e,n);else if(Qi.test(n))t.style.setProperty(A(e),n.replace(Qi,""),"important");else{var r=na(e);if(Array.isArray(n))for(var o=0,i=n.length;o-1?e.split(ia).forEach((function(e){return t.classList.add(e)})):t.classList.add(e);else{var n=" "+(t.getAttribute("class")||"")+" ";n.indexOf(" "+e+" ")<0&&t.setAttribute("class",(n+e).trim())}}function sa(t,e){if(e&&(e=e.trim()))if(t.classList)e.indexOf(" ")>-1?e.split(ia).forEach((function(e){return t.classList.remove(e)})):t.classList.remove(e),t.classList.length||t.removeAttribute("class");else{var n=" "+(t.getAttribute("class")||"")+" ",r=" "+e+" ";while(n.indexOf(r)>=0)n=n.replace(r," ");n=n.trim(),n?t.setAttribute("class",n):t.removeAttribute("class")}}function ca(t){if(t){if("object"===typeof t){var e={};return!1!==t.css&&j(e,ua(t.name||"v")),j(e,t),e}return"string"===typeof t?ua(t):void 0}}var ua=x((function(t){return{enterClass:t+"-enter",enterToClass:t+"-enter-to",enterActiveClass:t+"-enter-active",leaveClass:t+"-leave",leaveToClass:t+"-leave-to",leaveActiveClass:t+"-leave-active"}})),la=Z&&!rt,fa="transition",da="animation",pa="transition",ha="transitionend",va="animation",ga="animationend";la&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&(pa="WebkitTransition",ha="webkitTransitionEnd"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(va="WebkitAnimation",ga="webkitAnimationEnd"));var ma=Z?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:function(t){return t()};function ya(t){ma((function(){ma(t)}))}function ba(t,e){var n=t._transitionClasses||(t._transitionClasses=[]);n.indexOf(e)<0&&(n.push(e),aa(t,e))}function wa(t,e){t._transitionClasses&&b(t._transitionClasses,e),sa(t,e)}function _a(t,e,n){var r=Sa(t,e),o=r.type,i=r.timeout,a=r.propCount;if(!o)return n();var s=o===fa?ha:ga,c=0,u=function(){t.removeEventListener(s,l),n()},l=function(e){e.target===t&&++c>=a&&u()};setTimeout((function(){c0&&(n=fa,l=a,f=i.length):e===da?u>0&&(n=da,l=u,f=c.length):(l=Math.max(a,u),n=l>0?a>u?fa:da:null,f=n?n===fa?i.length:c.length:0);var d=n===fa&&xa.test(r[pa+"Property"]);return{type:n,timeout:l,propCount:f,hasTransform:d}}function Oa(t,e){while(t.length1}function Ma(t,e){!0!==e.data.show&&Ca(e)}var Ta=Z?{create:Ma,activate:Ma,remove:function(t,e){!0!==t.data.show?Aa(t,e):e()}}:{},ja=[Go,ei,Ui,qi,oa,Ta],Pa=ja.concat(Bo),Da=Io({nodeOps:Ao,modules:Pa});rt&&document.addEventListener("selectionchange",(function(){var t=document.activeElement;t&&t.vmodel&&Ha(t,"input")}));var Ia={inserted:function(t,e,n,r){"select"===n.tag?(r.elm&&!r.elm._vOptions?Se(n,"postpatch",(function(){Ia.componentUpdated(t,e,n)})):La(t,e,n.context),t._vOptions=[].map.call(t.options,Fa)):("textarea"===n.tag||po(t.type))&&(t._vModifiers=e.modifiers,e.modifiers.lazy||(t.addEventListener("compositionstart",za),t.addEventListener("compositionend",Ua),t.addEventListener("change",Ua),rt&&(t.vmodel=!0)))},componentUpdated:function(t,e,n){if("select"===n.tag){La(t,e,n.context);var r=t._vOptions,o=t._vOptions=[].map.call(t.options,Fa);if(o.some((function(t,e){return!R(t,r[e])}))){var i=t.multiple?e.value.some((function(t){return Ra(t,o)})):e.value!==e.oldValue&&Ra(e.value,o);i&&Ha(t,"change")}}}};function La(t,e,n){Na(t,e,n),(nt||ot)&&setTimeout((function(){Na(t,e,n)}),0)}function Na(t,e,n){var r=e.value,o=t.multiple;if(!o||Array.isArray(r)){for(var i,a,s=0,c=t.options.length;s-1,a.selected!==i&&(a.selected=i);else if(R(Fa(a),r))return void(t.selectedIndex!==s&&(t.selectedIndex=s));o||(t.selectedIndex=-1)}}function Ra(t,e){return e.every((function(e){return!R(e,t)}))}function Fa(t){return"_value"in t?t._value:t.value}function za(t){t.target.composing=!0}function Ua(t){t.target.composing&&(t.target.composing=!1,Ha(t.target,"input"))}function Ha(t,e){var n=document.createEvent("HTMLEvents");n.initEvent(e,!0,!0),t.dispatchEvent(n)}function Ba(t){return!t.componentInstance||t.data&&t.data.transition?t:Ba(t.componentInstance._vnode)}var Va={bind:function(t,e,n){var r=e.value;n=Ba(n);var o=n.data&&n.data.transition,i=t.__vOriginalDisplay="none"===t.style.display?"":t.style.display;r&&o?(n.data.show=!0,Ca(n,(function(){t.style.display=i}))):t.style.display=r?i:"none"},update:function(t,e,n){var r=e.value,o=e.oldValue;if(!r!==!o){n=Ba(n);var i=n.data&&n.data.transition;i?(n.data.show=!0,r?Ca(n,(function(){t.style.display=t.__vOriginalDisplay})):Aa(n,(function(){t.style.display="none"}))):t.style.display=r?t.__vOriginalDisplay:"none"}},unbind:function(t,e,n,r,o){o||(t.style.display=t.__vOriginalDisplay)}},Ya={model:Ia,show:Va},qa={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]};function Ga(t){var e=t&&t.componentOptions;return e&&e.Ctor.options.abstract?Ga(En(e.children)):t}function Wa(t){var e={},n=t.$options;for(var r in n.propsData)e[r]=t[r];var o=n._parentListeners;for(var i in o)e[O(i)]=o[i];return e}function Ka(t,e){if(/\d-keep-alive$/.test(e.tag))return t("keep-alive",{props:e.componentOptions.propsData})}function Xa(t){while(t=t.parent)if(t.data.transition)return!0}function Ja(t,e){return e.key===t.key&&e.tag===t.tag}var Za=function(t){return t.tag||On(t)},Qa=function(t){return"show"===t.name},ts={name:"transition",props:qa,abstract:!0,render:function(t){var e=this,n=this.$slots.default;if(n&&(n=n.filter(Za),n.length)){0;var r=this.mode;0;var o=n[0];if(Xa(this.$vnode))return o;var i=Ga(o);if(!i)return o;if(this._leaving)return Ka(t,o);var a="__transition-"+this._uid+"-";i.key=null==i.key?i.isComment?a+"comment":a+i.tag:s(i.key)?0===String(i.key).indexOf(a)?i.key:a+i.key:i.key;var c=(i.data||(i.data={})).transition=Wa(this),u=this._vnode,l=Ga(u);if(i.data.directives&&i.data.directives.some(Qa)&&(i.data.show=!0),l&&l.data&&!Ja(i,l)&&!On(l)&&(!l.componentInstance||!l.componentInstance._vnode.isComment)){var f=l.data.transition=j({},c);if("out-in"===r)return this._leaving=!0,Se(f,"afterLeave",(function(){e._leaving=!1,e.$forceUpdate()})),Ka(t,o);if("in-out"===r){if(On(i))return u;var d,p=function(){d()};Se(c,"afterEnter",p),Se(c,"enterCancelled",p),Se(f,"delayLeave",(function(t){d=t}))}}return o}}},es=j({tag:String,moveClass:String},qa);delete es.mode;var ns={props:es,beforeMount:function(){var t=this,e=this._update;this._update=function(n,r){var o=Pn(t);t.__patch__(t._vnode,t.kept,!1,!0),t._vnode=t.kept,o(),e.call(t,n,r)}},render:function(t){for(var e=this.tag||this.$vnode.data.tag||"span",n=Object.create(null),r=this.prevChildren=this.children,o=this.$slots.default||[],i=this.children=[],a=Wa(this),s=0;sc&&(s.push(i=t.slice(c,o)),a.push(JSON.stringify(i)));var u=ri(r[1].trim());a.push("_s("+u+")"),s.push({"@binding":u}),c=o+r[0].length}return c\/=]+)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/,Ss=/^\s*((?:v-[\w-]+:|@|:|#)\[[^=]+\][^\s"'<>\/=]*)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/,Os="[a-zA-Z_][\\-\\.0-9_a-zA-Z"+Y.source+"]*",Es="((?:"+Os+"\\:)?"+Os+")",Cs=new RegExp("^<"+Es),As=/^\s*(\/?)>/,$s=new RegExp("^<\\/"+Es+"[^>]*>"),ks=/^]+>/i,Ms=/^",""":'"',"&":"&"," ":"\n"," ":"\t","'":"'"},Is=/&(?:lt|gt|quot|amp|#39);/g,Ls=/&(?:lt|gt|quot|amp|#39|#10|#9);/g,Ns=g("pre,textarea",!0),Rs=function(t,e){return t&&Ns(t)&&"\n"===e[0]};function Fs(t,e){var n=e?Ls:Is;return t.replace(n,(function(t){return Ds[t]}))}function zs(t,e){var n,r,o=[],i=e.expectHTML,a=e.isUnaryTag||I,s=e.canBeLeftOpenTag||I,c=0;while(t){if(n=t,r&&js(r)){var u=0,l=r.toLowerCase(),f=Ps[l]||(Ps[l]=new RegExp("([\\s\\S]*?)(]*>)","i")),d=t.replace(f,(function(t,n,r){return u=r.length,js(l)||"noscript"===l||(n=n.replace(//g,"$1").replace(//g,"$1")),Rs(l,n)&&(n=n.slice(1)),e.chars&&e.chars(n),""}));c+=t.length-d.length,t=d,C(l,c-u,c)}else{var p=t.indexOf("<");if(0===p){if(Ms.test(t)){var h=t.indexOf("--\x3e");if(h>=0){e.shouldKeepComment&&e.comment(t.substring(4,h),c,c+h+3),S(h+3);continue}}if(Ts.test(t)){var v=t.indexOf("]>");if(v>=0){S(v+2);continue}}var g=t.match(ks);if(g){S(g[0].length);continue}var m=t.match($s);if(m){var y=c;S(m[0].length),C(m[1],y,c);continue}var b=O();if(b){E(b),Rs(b.tagName,t)&&S(1);continue}}var w=void 0,_=void 0,x=void 0;if(p>=0){_=t.slice(p);while(!$s.test(_)&&!Cs.test(_)&&!Ms.test(_)&&!Ts.test(_)){if(x=_.indexOf("<",1),x<0)break;p+=x,_=t.slice(p)}w=t.substring(0,p)}p<0&&(w=t),w&&S(w.length),e.chars&&w&&e.chars(w,c-w.length,c)}if(t===n){e.chars&&e.chars(t);break}}function S(e){c+=e,t=t.substring(e)}function O(){var e=t.match(Cs);if(e){var n,r,o={tagName:e[1],attrs:[],start:c};S(e[0].length);while(!(n=t.match(As))&&(r=t.match(Ss)||t.match(xs)))r.start=c,S(r[0].length),r.end=c,o.attrs.push(r);if(n)return o.unarySlash=n[1],S(n[0].length),o.end=c,o}}function E(t){var n=t.tagName,c=t.unarySlash;i&&("p"===r&&_s(n)&&C(r),s(n)&&r===n&&C(n));for(var u=a(n)||!!c,l=t.attrs.length,f=new Array(l),d=0;d=0;a--)if(o[a].lowerCasedTag===s)break}else a=0;if(a>=0){for(var u=o.length-1;u>=a;u--)e.end&&e.end(o[u].tag,n,i);o.length=a,r=a&&o[a-1].tag}else"br"===s?e.start&&e.start(t,[],!0,n,i):"p"===s&&(e.start&&e.start(t,[],!1,n,i),e.end&&e.end(t,n,i))}C()}var Us,Hs,Bs,Vs,Ys,qs,Gs,Ws,Ks=/^@|^v-on:/,Xs=/^v-|^@|^:|^#/,Js=/([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/,Zs=/,([^,\}\]]*)(?:,([^,\}\]]*))?$/,Qs=/^\(|\)$/g,tc=/^\[.*\]$/,ec=/:(.*)$/,nc=/^:|^\.|^v-bind:/,rc=/\.[^.\]]+(?=[^\]]*$)/g,oc=/^v-slot(:|$)|^#/,ic=/[\r\n]/,ac=/\s+/g,sc=x(ys.decode),cc="_empty_";function uc(t,e,n){return{type:1,tag:t,attrsList:e,attrsMap:Mc(e),rawAttrsMap:{},parent:n,children:[]}}function lc(t,e){Us=e.warn||ii,qs=e.isPreTag||I,Gs=e.mustUseProp||I,Ws=e.getTagNamespace||I;var n=e.isReservedTag||I;(function(t){return!!t.component||!n(t.tag)}),Bs=ai(e.modules,"transformNode"),Vs=ai(e.modules,"preTransformNode"),Ys=ai(e.modules,"postTransformNode"),Hs=e.delimiters;var r,o,i=[],a=!1!==e.preserveWhitespace,s=e.whitespace,c=!1,u=!1;function l(t){if(f(t),c||t.processed||(t=pc(t,e)),i.length||t===r||r.if&&(t.elseif||t.else)&&_c(r,{exp:t.elseif,block:t}),o&&!t.forbidden)if(t.elseif||t.else)bc(t,o);else{if(t.slotScope){var n=t.slotTarget||'"default"';(o.scopedSlots||(o.scopedSlots={}))[n]=t}o.children.push(t),t.parent=o}t.children=t.children.filter((function(t){return!t.slotScope})),f(t),t.pre&&(c=!1),qs(t.tag)&&(u=!1);for(var a=0;a|^function(?:\s+[\w$]+)?\s*\(/,tu=/\([^)]*?\);*$/,eu=/^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*|\['[^']*?']|\["[^"]*?"]|\[\d+]|\[[A-Za-z_$][\w$]*])*$/,nu={esc:27,tab:9,enter:13,space:32,up:38,left:37,right:39,down:40,delete:[8,46]},ru={esc:["Esc","Escape"],tab:"Tab",enter:"Enter",space:[" ","Spacebar"],up:["Up","ArrowUp"],left:["Left","ArrowLeft"],right:["Right","ArrowRight"],down:["Down","ArrowDown"],delete:["Backspace","Delete","Del"]},ou=function(t){return"if("+t+")return null;"},iu={stop:"$event.stopPropagation();",prevent:"$event.preventDefault();",self:ou("$event.target !== $event.currentTarget"),ctrl:ou("!$event.ctrlKey"),shift:ou("!$event.shiftKey"),alt:ou("!$event.altKey"),meta:ou("!$event.metaKey"),left:ou("'button' in $event && $event.button !== 0"),middle:ou("'button' in $event && $event.button !== 1"),right:ou("'button' in $event && $event.button !== 2")};function au(t,e){var n=e?"nativeOn:":"on:",r="",o="";for(var i in t){var a=su(t[i]);t[i]&&t[i].dynamic?o+=i+","+a+",":r+='"'+i+'":'+a+","}return r="{"+r.slice(0,-1)+"}",o?n+"_d("+r+",["+o.slice(0,-1)+"])":n+r}function su(t){if(!t)return"function(){}";if(Array.isArray(t))return"["+t.map((function(t){return su(t)})).join(",")+"]";var e=eu.test(t.value),n=Qc.test(t.value),r=eu.test(t.value.replace(tu,""));if(t.modifiers){var o="",i="",a=[];for(var s in t.modifiers)if(iu[s])i+=iu[s],nu[s]&&a.push(s);else if("exact"===s){var c=t.modifiers;i+=ou(["ctrl","shift","alt","meta"].filter((function(t){return!c[t]})).map((function(t){return"$event."+t+"Key"})).join("||"))}else a.push(s);a.length&&(o+=cu(a)),i&&(o+=i);var u=e?"return "+t.value+"($event)":n?"return ("+t.value+")($event)":r?"return "+t.value:t.value;return"function($event){"+o+u+"}"}return e||n?t.value:"function($event){"+(r?"return "+t.value:t.value)+"}"}function cu(t){return"if(!$event.type.indexOf('key')&&"+t.map(uu).join("&&")+")return null;"}function uu(t){var e=parseInt(t,10);if(e)return"$event.keyCode!=="+e;var n=nu[t],r=ru[t];return"_k($event.keyCode,"+JSON.stringify(t)+","+JSON.stringify(n)+",$event.key,"+JSON.stringify(r)+")"}function lu(t,e){t.wrapListeners=function(t){return"_g("+t+","+e.value+")"}}function fu(t,e){t.wrapData=function(n){return"_b("+n+",'"+t.tag+"',"+e.value+","+(e.modifiers&&e.modifiers.prop?"true":"false")+(e.modifiers&&e.modifiers.sync?",true":"")+")"}}var du={on:lu,bind:fu,cloak:D},pu=function(t){this.options=t,this.warn=t.warn||ii,this.transforms=ai(t.modules,"transformCode"),this.dataGenFns=ai(t.modules,"genData"),this.directives=j(j({},du),t.directives);var e=t.isReservedTag||I;this.maybeComponent=function(t){return!!t.component||!e(t.tag)},this.onceId=0,this.staticRenderFns=[],this.pre=!1};function hu(t,e){var n=new pu(e),r=t?vu(t,n):'_c("div")';return{render:"with(this){return "+r+"}",staticRenderFns:n.staticRenderFns}}function vu(t,e){if(t.parent&&(t.pre=t.pre||t.parent.pre),t.staticRoot&&!t.staticProcessed)return gu(t,e);if(t.once&&!t.onceProcessed)return mu(t,e);if(t.for&&!t.forProcessed)return wu(t,e);if(t.if&&!t.ifProcessed)return yu(t,e);if("template"!==t.tag||t.slotTarget||e.pre){if("slot"===t.tag)return Du(t,e);var n;if(t.component)n=Iu(t.component,t,e);else{var r;(!t.plain||t.pre&&e.maybeComponent(t))&&(r=_u(t,e));var o=t.inlineTemplate?null:$u(t,e,!0);n="_c('"+t.tag+"'"+(r?","+r:"")+(o?","+o:"")+")"}for(var i=0;i>>0}function Cu(t){return 1===t.type&&("slot"===t.tag||t.children.some(Cu))}function Au(t,e){var n=t.attrsMap["slot-scope"];if(t.if&&!t.ifProcessed&&!n)return yu(t,e,Au,"null");if(t.for&&!t.forProcessed)return wu(t,e,Au);var r=t.slotScope===cc?"":String(t.slotScope),o="function("+r+"){return "+("template"===t.tag?t.if&&n?"("+t.if+")?"+($u(t,e)||"undefined")+":undefined":$u(t,e)||"undefined":vu(t,e))+"}",i=r?"":",proxy:true";return"{key:"+(t.slotTarget||'"default"')+",fn:"+o+i+"}"}function $u(t,e,n,r,o){var i=t.children;if(i.length){var a=i[0];if(1===i.length&&a.for&&"template"!==a.tag&&"slot"!==a.tag){var s=n?e.maybeComponent(a)?",1":",0":"";return""+(r||vu)(a,e)+s}var c=n?ku(i,e.maybeComponent):0,u=o||Tu;return"["+i.map((function(t){return u(t,e)})).join(",")+"]"+(c?","+c:"")}}function ku(t,e){for(var n=0,r=0;r':'
',Uu.innerHTML.indexOf(" ")>0}var qu=!!Z&&Yu(!1),Gu=!!Z&&Yu(!0),Wu=x((function(t){var e=ho(t);return e&&e.innerHTML})),Ku=Er.prototype.$mount;function Xu(t){if(t.outerHTML)return t.outerHTML;var e=document.createElement("div");return e.appendChild(t.cloneNode(!0)),e.innerHTML}Er.prototype.$mount=function(t,e){if(t=t&&ho(t),t===document.body||t===document.documentElement)return this;var n=this.$options;if(!n.render){var r=n.template;if(r)if("string"===typeof r)"#"===r.charAt(0)&&(r=Wu(r));else{if(!r.nodeType)return this;r=r.innerHTML}else t&&(r=Xu(t));if(r){0;var o=Vu(r,{outputSourceRange:!1,shouldDecodeNewlines:qu,shouldDecodeNewlinesForHref:Gu,delimiters:n.delimiters,comments:n.comments},this),i=o.render,a=o.staticRenderFns;n.render=i,n.staticRenderFns=a}}return Ku.call(this,t,e)},Er.compile=Vu,e["a"]=Er}).call(this,n("c8ba"))},a15b:function(t,e,n){"use strict";var r=n("23e7"),o=n("44ad"),i=n("fc6a"),a=n("a640"),s=[].join,c=o!=Object,u=a("join",",");r({target:"Array",proto:!0,forced:c||!u},{join:function(t){return s.call(i(this),void 0===t?",":t)}})},a434:function(t,e,n){"use strict";var r=n("23e7"),o=n("23cb"),i=n("a691"),a=n("50c4"),s=n("7b0b"),c=n("65f0"),u=n("8418"),l=n("1dde"),f=n("ae40"),d=l("splice"),p=f("splice",{ACCESSORS:!0,0:0,1:2}),h=Math.max,v=Math.min,g=9007199254740991,m="Maximum allowed length exceeded";r({target:"Array",proto:!0,forced:!d||!p},{splice:function(t,e){var n,r,l,f,d,p,y=s(this),b=a(y.length),w=o(t,b),_=arguments.length;if(0===_?n=r=0:1===_?(n=0,r=b-w):(n=_-2,r=v(h(i(e),0),b-w)),b+n-r>g)throw TypeError(m);for(l=c(y,r),f=0;fb-r+n;f--)delete y[f-1]}else if(n>r)for(f=b-r;f>w;f--)d=f+r-1,p=f+n-1,d in y?y[p]=y[d]:delete y[p];for(f=0;fi)o.push(arguments[i++]);if(r=e,(p(e)||void 0!==t)&&!st(t))return d(e)||(e=function(t,e){if("function"==typeof r&&(e=r.call(this,t,e)),!st(e))return e}),o[1]=e,G.apply(null,o)}})}q[U][H]||A(q[U],H,q[U].valueOf),L(q,z),T[F]=!0},a640:function(t,e,n){"use strict";var r=n("d039");t.exports=function(t,e){var n=[][t];return!!n&&r((function(){n.call(null,e||function(){throw 1},1)}))}},a691:function(t,e){var n=Math.ceil,r=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?r:n)(t)}},a79d:function(t,e,n){"use strict";var r=n("23e7"),o=n("c430"),i=n("fea9"),a=n("d039"),s=n("d066"),c=n("4840"),u=n("cdf9"),l=n("6eeb"),f=!!i&&a((function(){i.prototype["finally"].call({then:function(){}},(function(){}))}));r({target:"Promise",proto:!0,real:!0,forced:f},{finally:function(t){var e=c(this,s("Promise")),n="function"==typeof t;return this.then(n?function(n){return u(e,t()).then((function(){return n}))}:t,n?function(n){return u(e,t()).then((function(){throw n}))}:t)}}),o||"function"!=typeof i||i.prototype["finally"]||l(i.prototype,"finally",s("Promise").prototype["finally"])},a9e3:function(t,e,n){"use strict";var r=n("83ab"),o=n("da84"),i=n("94ca"),a=n("6eeb"),s=n("5135"),c=n("c6b6"),u=n("7156"),l=n("c04e"),f=n("d039"),d=n("7c73"),p=n("241c").f,h=n("06cf").f,v=n("9bf2").f,g=n("58a8").trim,m="Number",y=o[m],b=y.prototype,w=c(d(b))==m,_=function(t){var e,n,r,o,i,a,s,c,u=l(t,!1);if("string"==typeof u&&u.length>2)if(u=g(u),e=u.charCodeAt(0),43===e||45===e){if(n=u.charCodeAt(2),88===n||120===n)return NaN}else if(48===e){switch(u.charCodeAt(1)){case 66:case 98:r=2,o=49;break;case 79:case 111:r=8,o=55;break;default:return+u}for(i=u.slice(2),a=i.length,s=0;so)return NaN;return parseInt(i,r)}return+u};if(i(m,!y(" 0o1")||!y("0b1")||y("+0x1"))){for(var x,S=function(t){var e=arguments.length<1?0:t,n=this;return n instanceof S&&(w?f((function(){b.valueOf.call(n)})):c(n)!=m)?u(new y(_(e)),n,S):_(e)},O=r?p(y):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger".split(","),E=0;O.length>E;E++)s(y,x=O[E])&&!s(S,x)&&v(S,x,h(y,x));S.prototype=b,b.constructor=S,a(o,m,S)}},aa47:function(t,e,n){"use strict"; +var n=Object.freeze({});function r(t){return void 0===t||null===t}function o(t){return void 0!==t&&null!==t}function i(t){return!0===t}function a(t){return!1===t}function s(t){return"string"===typeof t||"number"===typeof t||"symbol"===typeof t||"boolean"===typeof t}function c(t){return null!==t&&"object"===typeof t}var u=Object.prototype.toString;function l(t){return"[object Object]"===u.call(t)}function f(t){return"[object RegExp]"===u.call(t)}function p(t){var e=parseFloat(String(t));return e>=0&&Math.floor(e)===e&&isFinite(t)}function d(t){return o(t)&&"function"===typeof t.then&&"function"===typeof t.catch}function h(t){return null==t?"":Array.isArray(t)||l(t)&&t.toString===u?JSON.stringify(t,null,2):String(t)}function v(t){var e=parseFloat(t);return isNaN(e)?t:e}function m(t,e){for(var n=Object.create(null),r=t.split(","),o=0;o-1)return t.splice(n,1)}}var w=Object.prototype.hasOwnProperty;function x(t,e){return w.call(t,e)}function S(t){var e=Object.create(null);return function(n){var r=e[n];return r||(e[n]=t(n))}}var O=/-(\w)/g,_=S((function(t){return t.replace(O,(function(t,e){return e?e.toUpperCase():""}))})),k=S((function(t){return t.charAt(0).toUpperCase()+t.slice(1)})),C=/\B([A-Z])/g,M=S((function(t){return t.replace(C,"-$1").toLowerCase()}));function E(t,e){function n(n){var r=arguments.length;return r?r>1?t.apply(e,arguments):t.call(e,n):t.call(e)}return n._length=t.length,n}function A(t,e){return t.bind(e)}var T=Function.prototype.bind?A:E;function $(t,e){e=e||0;var n=t.length-e,r=new Array(n);while(n--)r[n]=t[n+e];return r}function D(t,e){for(var n in e)t[n]=e[n];return t}function N(t){for(var e={},n=0;n0,ot=et&&et.indexOf("edge/")>0,it=(et&&et.indexOf("android"),et&&/iphone|ipad|ipod|ios/.test(et)||"ios"===tt),at=(et&&/chrome\/\d+/.test(et),et&&/phantomjs/.test(et),et&&et.match(/firefox\/(\d+)/)),st={}.watch,ct=!1;if(Z)try{var ut={};Object.defineProperty(ut,"passive",{get:function(){ct=!0}}),window.addEventListener("test-passive",null,ut)}catch(Xu){}var lt=function(){return void 0===G&&(G=!Z&&!Q&&"undefined"!==typeof t&&(t["process"]&&"server"===t["process"].env.VUE_ENV)),G},ft=Z&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function pt(t){return"function"===typeof t&&/native code/.test(t.toString())}var dt,ht="undefined"!==typeof Symbol&&pt(Symbol)&&"undefined"!==typeof Reflect&&pt(Reflect.ownKeys);dt="undefined"!==typeof Set&&pt(Set)?Set:function(){function t(){this.set=Object.create(null)}return t.prototype.has=function(t){return!0===this.set[t]},t.prototype.add=function(t){this.set[t]=!0},t.prototype.clear=function(){this.set=Object.create(null)},t}();var vt=P,mt=0,gt=function(){this.id=mt++,this.subs=[]};gt.prototype.addSub=function(t){this.subs.push(t)},gt.prototype.removeSub=function(t){b(this.subs,t)},gt.prototype.depend=function(){gt.target&>.target.addDep(this)},gt.prototype.notify=function(){var t=this.subs.slice();for(var e=0,n=t.length;e-1)if(i&&!x(o,"default"))a=!1;else if(""===a||a===M(t)){var c=ne(String,o.type);(c<0||s0&&(a=Ae(a,(e||"")+"_"+n),Ee(a[0])&&Ee(u)&&(l[c]=_t(u.text+a[0].text),a.shift()),l.push.apply(l,a)):s(a)?Ee(u)?l[c]=_t(u.text+a):""!==a&&l.push(_t(a)):Ee(a)&&Ee(u)?l[c]=_t(u.text+a.text):(i(t._isVList)&&o(a.tag)&&r(a.key)&&o(e)&&(a.key="__vlist"+e+"_"+n+"__"),l.push(a)));return l}function Te(t){var e=t.$options.provide;e&&(t._provided="function"===typeof e?e.call(t):e)}function $e(t){var e=De(t.$options.inject,t);e&&($t(!1),Object.keys(e).forEach((function(n){It(t,n,e[n])})),$t(!0))}function De(t,e){if(t){for(var n=Object.create(null),r=ht?Reflect.ownKeys(t):Object.keys(t),o=0;o0,a=t?!!t.$stable:!i,s=t&&t.$key;if(t){if(t._normalized)return t._normalized;if(a&&r&&r!==n&&s===r.$key&&!i&&!r.$hasNormal)return r;for(var c in o={},t)t[c]&&"$"!==c[0]&&(o[c]=Ie(e,c,t[c]))}else o={};for(var u in e)u in o||(o[u]=Re(e,u));return t&&Object.isExtensible(t)&&(t._normalized=o),K(o,"$stable",a),K(o,"$key",s),K(o,"$hasNormal",i),o}function Ie(t,e,n){var r=function(){var t=arguments.length?n.apply(null,arguments):n({});return t=t&&"object"===typeof t&&!Array.isArray(t)?[t]:Me(t),t&&(0===t.length||1===t.length&&t[0].isComment)?void 0:t};return n.proxy&&Object.defineProperty(t,e,{get:r,enumerable:!0,configurable:!0}),r}function Re(t,e){return function(){return t[e]}}function Le(t,e){var n,r,i,a,s;if(Array.isArray(t)||"string"===typeof t)for(n=new Array(t.length),r=0,i=t.length;r1?$(n):n;for(var r=$(arguments,1),o='event handler for "'+t+'"',i=0,a=n.length;idocument.createEvent("Event").timeStamp&&(Gn=function(){return Xn.now()})}function Zn(){var t,e;for(Yn=Gn(),Un=!0,Vn.sort((function(t,e){return t.id-e.id})),Kn=0;KnKn&&Vn[n].id>t.id)n--;Vn.splice(n+1,0,t)}else Vn.push(t);Wn||(Wn=!0,me(Zn))}}var rr=0,or=function(t,e,n,r,o){this.vm=t,o&&(t._watcher=this),t._watchers.push(this),r?(this.deep=!!r.deep,this.user=!!r.user,this.lazy=!!r.lazy,this.sync=!!r.sync,this.before=r.before):this.deep=this.user=this.lazy=this.sync=!1,this.cb=n,this.id=++rr,this.active=!0,this.dirty=this.lazy,this.deps=[],this.newDeps=[],this.depIds=new dt,this.newDepIds=new dt,this.expression="","function"===typeof e?this.getter=e:(this.getter=Y(e),this.getter||(this.getter=P)),this.value=this.lazy?void 0:this.get()};or.prototype.get=function(){var t;bt(this);var e=this.vm;try{t=this.getter.call(e,e)}catch(Xu){if(!this.user)throw Xu;re(Xu,e,'getter for watcher "'+this.expression+'"')}finally{this.deep&&ye(t),wt(),this.cleanupDeps()}return t},or.prototype.addDep=function(t){var e=t.id;this.newDepIds.has(e)||(this.newDepIds.add(e),this.newDeps.push(t),this.depIds.has(e)||t.addSub(this))},or.prototype.cleanupDeps=function(){var t=this.deps.length;while(t--){var e=this.deps[t];this.newDepIds.has(e.id)||e.removeSub(this)}var n=this.depIds;this.depIds=this.newDepIds,this.newDepIds=n,this.newDepIds.clear(),n=this.deps,this.deps=this.newDeps,this.newDeps=n,this.newDeps.length=0},or.prototype.update=function(){this.lazy?this.dirty=!0:this.sync?this.run():nr(this)},or.prototype.run=function(){if(this.active){var t=this.get();if(t!==this.value||c(t)||this.deep){var e=this.value;if(this.value=t,this.user)try{this.cb.call(this.vm,t,e)}catch(Xu){re(Xu,this.vm,'callback for watcher "'+this.expression+'"')}else this.cb.call(this.vm,t,e)}}},or.prototype.evaluate=function(){this.value=this.get(),this.dirty=!1},or.prototype.depend=function(){var t=this.deps.length;while(t--)this.deps[t].depend()},or.prototype.teardown=function(){if(this.active){this.vm._isBeingDestroyed||b(this.vm._watchers,this);var t=this.deps.length;while(t--)this.deps[t].removeSub(this);this.active=!1}};var ir={enumerable:!0,configurable:!0,get:P,set:P};function ar(t,e,n){ir.get=function(){return this[e][n]},ir.set=function(t){this[e][n]=t},Object.defineProperty(t,n,ir)}function sr(t){t._watchers=[];var e=t.$options;e.props&&cr(t,e.props),e.methods&&mr(t,e.methods),e.data?ur(t):jt(t._data={},!0),e.computed&&pr(t,e.computed),e.watch&&e.watch!==st&&gr(t,e.watch)}function cr(t,e){var n=t.$options.propsData||{},r=t._props={},o=t.$options._propKeys=[],i=!t.$parent;i||$t(!1);var a=function(i){o.push(i);var a=Zt(i,e,n,t);It(r,i,a),i in t||ar(t,"_props",i)};for(var s in e)a(s);$t(!0)}function ur(t){var e=t.$options.data;e=t._data="function"===typeof e?lr(e,t):e||{},l(e)||(e={});var n=Object.keys(e),r=t.$options.props,o=(t.$options.methods,n.length);while(o--){var i=n[o];0,r&&x(r,i)||U(i)||ar(t,"_data",i)}jt(e,!0)}function lr(t,e){bt();try{return t.call(e,e)}catch(Xu){return re(Xu,e,"data()"),{}}finally{wt()}}var fr={lazy:!0};function pr(t,e){var n=t._computedWatchers=Object.create(null),r=lt();for(var o in e){var i=e[o],a="function"===typeof i?i:i.get;0,r||(n[o]=new or(t,a||P,P,fr)),o in t||dr(t,o,i)}}function dr(t,e,n){var r=!lt();"function"===typeof n?(ir.get=r?hr(e):vr(n),ir.set=P):(ir.get=n.get?r&&!1!==n.cache?hr(e):vr(n.get):P,ir.set=n.set||P),Object.defineProperty(t,e,ir)}function hr(t){return function(){var e=this._computedWatchers&&this._computedWatchers[t];if(e)return e.dirty&&e.evaluate(),gt.target&&e.depend(),e.value}}function vr(t){return function(){return t.call(this,this)}}function mr(t,e){t.$options.props;for(var n in e)t[n]="function"!==typeof e[n]?P:T(e[n],t)}function gr(t,e){for(var n in e){var r=e[n];if(Array.isArray(r))for(var o=0;o-1)return this;var n=$(arguments,1);return n.unshift(this),"function"===typeof t.install?t.install.apply(t,n):"function"===typeof t&&t.apply(null,n),e.push(t),this}}function Mr(t){t.mixin=function(t){return this.options=Gt(this.options,t),this}}function Er(t){t.cid=0;var e=1;t.extend=function(t){t=t||{};var n=this,r=n.cid,o=t._Ctor||(t._Ctor={});if(o[r])return o[r];var i=t.name||n.options.name;var a=function(t){this._init(t)};return a.prototype=Object.create(n.prototype),a.prototype.constructor=a,a.cid=e++,a.options=Gt(n.options,t),a["super"]=n,a.options.props&&Ar(a),a.options.computed&&Tr(a),a.extend=n.extend,a.mixin=n.mixin,a.use=n.use,V.forEach((function(t){a[t]=n[t]})),i&&(a.options.components[i]=a),a.superOptions=n.options,a.extendOptions=t,a.sealedOptions=D({},a.options),o[r]=a,a}}function Ar(t){var e=t.options.props;for(var n in e)ar(t.prototype,"_props",n)}function Tr(t){var e=t.options.computed;for(var n in e)dr(t.prototype,n,e[n])}function $r(t){V.forEach((function(e){t[e]=function(t,n){return n?("component"===e&&l(n)&&(n.name=n.name||t,n=this.options._base.extend(n)),"directive"===e&&"function"===typeof n&&(n={bind:n,update:n}),this.options[e+"s"][t]=n,n):this.options[e+"s"][t]}}))}function Dr(t){return t&&(t.Ctor.options.name||t.tag)}function Nr(t,e){return Array.isArray(t)?t.indexOf(e)>-1:"string"===typeof t?t.split(",").indexOf(e)>-1:!!f(t)&&t.test(e)}function Pr(t,e){var n=t.cache,r=t.keys,o=t._vnode;for(var i in n){var a=n[i];if(a){var s=Dr(a.componentOptions);s&&!e(s)&&jr(n,i,r,o)}}}function jr(t,e,n,r){var o=t[e];!o||r&&o.tag===r.tag||o.componentInstance.$destroy(),t[e]=null,b(n,e)}xr(kr),br(kr),$n(kr),jn(kr),wn(kr);var Ir=[String,RegExp,Array],Rr={name:"keep-alive",abstract:!0,props:{include:Ir,exclude:Ir,max:[String,Number]},created:function(){this.cache=Object.create(null),this.keys=[]},destroyed:function(){for(var t in this.cache)jr(this.cache,t,this.keys)},mounted:function(){var t=this;this.$watch("include",(function(e){Pr(t,(function(t){return Nr(e,t)}))})),this.$watch("exclude",(function(e){Pr(t,(function(t){return!Nr(e,t)}))}))},render:function(){var t=this.$slots.default,e=kn(t),n=e&&e.componentOptions;if(n){var r=Dr(n),o=this,i=o.include,a=o.exclude;if(i&&(!r||!Nr(i,r))||a&&r&&Nr(a,r))return e;var s=this,c=s.cache,u=s.keys,l=null==e.key?n.Ctor.cid+(n.tag?"::"+n.tag:""):e.key;c[l]?(e.componentInstance=c[l].componentInstance,b(u,l),u.push(l)):(c[l]=e,u.push(l),this.max&&u.length>parseInt(this.max)&&jr(c,u[0],u,this._vnode)),e.data.keepAlive=!0}return e||t&&t[0]}},Lr={KeepAlive:Rr};function zr(t){var e={get:function(){return H}};Object.defineProperty(t,"config",e),t.util={warn:vt,extend:D,mergeOptions:Gt,defineReactive:It},t.set=Rt,t.delete=Lt,t.nextTick=me,t.observable=function(t){return jt(t),t},t.options=Object.create(null),V.forEach((function(e){t.options[e+"s"]=Object.create(null)})),t.options._base=t,D(t.options.components,Lr),Cr(t),Mr(t),Er(t),$r(t)}zr(kr),Object.defineProperty(kr.prototype,"$isServer",{get:lt}),Object.defineProperty(kr.prototype,"$ssrContext",{get:function(){return this.$vnode&&this.$vnode.ssrContext}}),Object.defineProperty(kr,"FunctionalRenderContext",{value:Qe}),kr.version="2.6.12";var Fr=m("style,class"),Br=m("input,textarea,option,select,progress"),Vr=function(t,e,n){return"value"===n&&Br(t)&&"button"!==e||"selected"===n&&"option"===t||"checked"===n&&"input"===t||"muted"===n&&"video"===t},qr=m("contenteditable,draggable,spellcheck"),Hr=m("events,caret,typing,plaintext-only"),Wr=function(t,e){return Gr(e)||"false"===e?"false":"contenteditable"===t&&Hr(e)?e:"true"},Ur=m("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,translate,truespeed,typemustmatch,visible"),Kr="http://www.w3.org/1999/xlink",Jr=function(t){return":"===t.charAt(5)&&"xlink"===t.slice(0,5)},Yr=function(t){return Jr(t)?t.slice(6,t.length):""},Gr=function(t){return null==t||!1===t};function Xr(t){var e=t.data,n=t,r=t;while(o(r.componentInstance))r=r.componentInstance._vnode,r&&r.data&&(e=Zr(r.data,e));while(o(n=n.parent))n&&n.data&&(e=Zr(e,n.data));return Qr(e.staticClass,e.class)}function Zr(t,e){return{staticClass:to(t.staticClass,e.staticClass),class:o(t.class)?[t.class,e.class]:e.class}}function Qr(t,e){return o(t)||o(e)?to(t,eo(e)):""}function to(t,e){return t?e?t+" "+e:t:e||""}function eo(t){return Array.isArray(t)?no(t):c(t)?ro(t):"string"===typeof t?t:""}function no(t){for(var e,n="",r=0,i=t.length;r-1?lo[t]=e.constructor===window.HTMLUnknownElement||e.constructor===window.HTMLElement:lo[t]=/HTMLUnknownElement/.test(e.toString())}var po=m("text,number,password,search,email,tel,url");function ho(t){if("string"===typeof t){var e=document.querySelector(t);return e||document.createElement("div")}return t}function vo(t,e){var n=document.createElement(t);return"select"!==t||e.data&&e.data.attrs&&void 0!==e.data.attrs.multiple&&n.setAttribute("multiple","multiple"),n}function mo(t,e){return document.createElementNS(oo[t],e)}function go(t){return document.createTextNode(t)}function yo(t){return document.createComment(t)}function bo(t,e,n){t.insertBefore(e,n)}function wo(t,e){t.removeChild(e)}function xo(t,e){t.appendChild(e)}function So(t){return t.parentNode}function Oo(t){return t.nextSibling}function _o(t){return t.tagName}function ko(t,e){t.textContent=e}function Co(t,e){t.setAttribute(e,"")}var Mo=Object.freeze({createElement:vo,createElementNS:mo,createTextNode:go,createComment:yo,insertBefore:bo,removeChild:wo,appendChild:xo,parentNode:So,nextSibling:Oo,tagName:_o,setTextContent:ko,setStyleScope:Co}),Eo={create:function(t,e){Ao(e)},update:function(t,e){t.data.ref!==e.data.ref&&(Ao(t,!0),Ao(e))},destroy:function(t){Ao(t,!0)}};function Ao(t,e){var n=t.data.ref;if(o(n)){var r=t.context,i=t.componentInstance||t.elm,a=r.$refs;e?Array.isArray(a[n])?b(a[n],i):a[n]===i&&(a[n]=void 0):t.data.refInFor?Array.isArray(a[n])?a[n].indexOf(i)<0&&a[n].push(i):a[n]=[i]:a[n]=i}}var To=new xt("",{},[]),$o=["create","activate","update","remove","destroy"];function Do(t,e){return t.key===e.key&&(t.tag===e.tag&&t.isComment===e.isComment&&o(t.data)===o(e.data)&&No(t,e)||i(t.isAsyncPlaceholder)&&t.asyncFactory===e.asyncFactory&&r(e.asyncFactory.error))}function No(t,e){if("input"!==t.tag)return!0;var n,r=o(n=t.data)&&o(n=n.attrs)&&n.type,i=o(n=e.data)&&o(n=n.attrs)&&n.type;return r===i||po(r)&&po(i)}function Po(t,e,n){var r,i,a={};for(r=e;r<=n;++r)i=t[r].key,o(i)&&(a[i]=r);return a}function jo(t){var e,n,a={},c=t.modules,u=t.nodeOps;for(e=0;e<$o.length;++e)for(a[$o[e]]=[],n=0;nv?(f=r(n[y+1])?null:n[y+1].elm,O(t,f,n,h,y,i)):h>y&&k(e,p,v)}function E(t,e,n,r){for(var i=n;i-1?Uo(t,e,n):Ur(e)?Gr(n)?t.removeAttribute(e):(n="allowfullscreen"===e&&"EMBED"===t.tagName?"true":e,t.setAttribute(e,n)):qr(e)?t.setAttribute(e,Wr(e,n)):Jr(e)?Gr(n)?t.removeAttributeNS(Kr,Yr(e)):t.setAttributeNS(Kr,e,n):Uo(t,e,n)}function Uo(t,e,n){if(Gr(n))t.removeAttribute(e);else{if(nt&&!rt&&"TEXTAREA"===t.tagName&&"placeholder"===e&&""!==n&&!t.__ieph){var r=function(e){e.stopImmediatePropagation(),t.removeEventListener("input",r)};t.addEventListener("input",r),t.__ieph=!0}t.setAttribute(e,n)}}var Ko={create:Ho,update:Ho};function Jo(t,e){var n=e.elm,i=e.data,a=t.data;if(!(r(i.staticClass)&&r(i.class)&&(r(a)||r(a.staticClass)&&r(a.class)))){var s=Xr(e),c=n._transitionClasses;o(c)&&(s=to(s,eo(c))),s!==n._prevClass&&(n.setAttribute("class",s),n._prevClass=s)}}var Yo,Go,Xo,Zo,Qo,ti,ei={create:Jo,update:Jo},ni=/[\w).+\-_$\]]/;function ri(t){var e,n,r,o,i,a=!1,s=!1,c=!1,u=!1,l=0,f=0,p=0,d=0;for(r=0;r=0;h--)if(v=t.charAt(h)," "!==v)break;v&&ni.test(v)||(u=!0)}}else void 0===o?(d=r+1,o=t.slice(0,r).trim()):m();function m(){(i||(i=[])).push(t.slice(d,r).trim()),d=r+1}if(void 0===o?o=t.slice(0,r).trim():0!==d&&m(),i)for(r=0;r-1?{exp:t.slice(0,Zo),key:'"'+t.slice(Zo+1)+'"'}:{exp:t,key:null};Go=t,Zo=Qo=ti=0;while(!Si())Xo=xi(),Oi(Xo)?ki(Xo):91===Xo&&_i(Xo);return{exp:t.slice(0,Qo),key:t.slice(Qo+1,ti)}}function xi(){return Go.charCodeAt(++Zo)}function Si(){return Zo>=Yo}function Oi(t){return 34===t||39===t}function _i(t){var e=1;Qo=Zo;while(!Si())if(t=xi(),Oi(t))ki(t);else if(91===t&&e++,93===t&&e--,0===e){ti=Zo;break}}function ki(t){var e=t;while(!Si())if(t=xi(),t===e)break}var Ci,Mi="__r",Ei="__c";function Ai(t,e,n){n;var r=e.value,o=e.modifiers,i=t.tag,a=t.attrsMap.type;if(t.component)return yi(t,r,o),!1;if("select"===i)Di(t,r,o);else if("input"===i&&"checkbox"===a)Ti(t,r,o);else if("input"===i&&"radio"===a)$i(t,r,o);else if("input"===i||"textarea"===i)Ni(t,r,o);else{if(!H.isReservedTag(i))return yi(t,r,o),!1}return!0}function Ti(t,e,n){var r=n&&n.number,o=hi(t,"value")||"null",i=hi(t,"true-value")||"true",a=hi(t,"false-value")||"false";si(t,"checked","Array.isArray("+e+")?_i("+e+","+o+")>-1"+("true"===i?":("+e+")":":_q("+e+","+i+")")),pi(t,"change","var $$a="+e+",$$el=$event.target,$$c=$$el.checked?("+i+"):("+a+");if(Array.isArray($$a)){var $$v="+(r?"_n("+o+")":o)+",$$i=_i($$a,$$v);if($$el.checked){$$i<0&&("+bi(e,"$$a.concat([$$v])")+")}else{$$i>-1&&("+bi(e,"$$a.slice(0,$$i).concat($$a.slice($$i+1))")+")}}else{"+bi(e,"$$c")+"}",null,!0)}function $i(t,e,n){var r=n&&n.number,o=hi(t,"value")||"null";o=r?"_n("+o+")":o,si(t,"checked","_q("+e+","+o+")"),pi(t,"change",bi(e,o),null,!0)}function Di(t,e,n){var r=n&&n.number,o='Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = "_value" in o ? o._value : o.value;return '+(r?"_n(val)":"val")+"})",i="$event.target.multiple ? $$selectedVal : $$selectedVal[0]",a="var $$selectedVal = "+o+";";a=a+" "+bi(e,i),pi(t,"change",a,null,!0)}function Ni(t,e,n){var r=t.attrsMap.type,o=n||{},i=o.lazy,a=o.number,s=o.trim,c=!i&&"range"!==r,u=i?"change":"range"===r?Mi:"input",l="$event.target.value";s&&(l="$event.target.value.trim()"),a&&(l="_n("+l+")");var f=bi(e,l);c&&(f="if($event.target.composing)return;"+f),si(t,"value","("+e+")"),pi(t,u,f,null,!0),(s||a)&&pi(t,"blur","$forceUpdate()")}function Pi(t){if(o(t[Mi])){var e=nt?"change":"input";t[e]=[].concat(t[Mi],t[e]||[]),delete t[Mi]}o(t[Ei])&&(t.change=[].concat(t[Ei],t.change||[]),delete t[Ei])}function ji(t,e,n){var r=Ci;return function o(){var i=e.apply(null,arguments);null!==i&&Li(t,o,n,r)}}var Ii=ce&&!(at&&Number(at[1])<=53);function Ri(t,e,n,r){if(Ii){var o=Yn,i=e;e=i._wrapper=function(t){if(t.target===t.currentTarget||t.timeStamp>=o||t.timeStamp<=0||t.target.ownerDocument!==document)return i.apply(this,arguments)}}Ci.addEventListener(t,e,ct?{capture:n,passive:r}:n)}function Li(t,e,n,r){(r||Ci).removeEventListener(t,e._wrapper||e,n)}function zi(t,e){if(!r(t.data.on)||!r(e.data.on)){var n=e.data.on||{},o=t.data.on||{};Ci=e.elm,Pi(n),Se(n,o,Ri,Li,ji,e.context),Ci=void 0}}var Fi,Bi={create:zi,update:zi};function Vi(t,e){if(!r(t.data.domProps)||!r(e.data.domProps)){var n,i,a=e.elm,s=t.data.domProps||{},c=e.data.domProps||{};for(n in o(c.__ob__)&&(c=e.data.domProps=D({},c)),s)n in c||(a[n]="");for(n in c){if(i=c[n],"textContent"===n||"innerHTML"===n){if(e.children&&(e.children.length=0),i===s[n])continue;1===a.childNodes.length&&a.removeChild(a.childNodes[0])}if("value"===n&&"PROGRESS"!==a.tagName){a._value=i;var u=r(i)?"":String(i);qi(a,u)&&(a.value=u)}else if("innerHTML"===n&&ao(a.tagName)&&r(a.innerHTML)){Fi=Fi||document.createElement("div"),Fi.innerHTML=""+i+"";var l=Fi.firstChild;while(a.firstChild)a.removeChild(a.firstChild);while(l.firstChild)a.appendChild(l.firstChild)}else if(i!==s[n])try{a[n]=i}catch(Xu){}}}}function qi(t,e){return!t.composing&&("OPTION"===t.tagName||Hi(t,e)||Wi(t,e))}function Hi(t,e){var n=!0;try{n=document.activeElement!==t}catch(Xu){}return n&&t.value!==e}function Wi(t,e){var n=t.value,r=t._vModifiers;if(o(r)){if(r.number)return v(n)!==v(e);if(r.trim)return n.trim()!==e.trim()}return n!==e}var Ui={create:Vi,update:Vi},Ki=S((function(t){var e={},n=/;(?![^(]*\))/g,r=/:(.+)/;return t.split(n).forEach((function(t){if(t){var n=t.split(r);n.length>1&&(e[n[0].trim()]=n[1].trim())}})),e}));function Ji(t){var e=Yi(t.style);return t.staticStyle?D(t.staticStyle,e):e}function Yi(t){return Array.isArray(t)?N(t):"string"===typeof t?Ki(t):t}function Gi(t,e){var n,r={};if(e){var o=t;while(o.componentInstance)o=o.componentInstance._vnode,o&&o.data&&(n=Ji(o.data))&&D(r,n)}(n=Ji(t.data))&&D(r,n);var i=t;while(i=i.parent)i.data&&(n=Ji(i.data))&&D(r,n);return r}var Xi,Zi=/^--/,Qi=/\s*!important$/,ta=function(t,e,n){if(Zi.test(e))t.style.setProperty(e,n);else if(Qi.test(n))t.style.setProperty(M(e),n.replace(Qi,""),"important");else{var r=na(e);if(Array.isArray(n))for(var o=0,i=n.length;o-1?e.split(ia).forEach((function(e){return t.classList.add(e)})):t.classList.add(e);else{var n=" "+(t.getAttribute("class")||"")+" ";n.indexOf(" "+e+" ")<0&&t.setAttribute("class",(n+e).trim())}}function sa(t,e){if(e&&(e=e.trim()))if(t.classList)e.indexOf(" ")>-1?e.split(ia).forEach((function(e){return t.classList.remove(e)})):t.classList.remove(e),t.classList.length||t.removeAttribute("class");else{var n=" "+(t.getAttribute("class")||"")+" ",r=" "+e+" ";while(n.indexOf(r)>=0)n=n.replace(r," ");n=n.trim(),n?t.setAttribute("class",n):t.removeAttribute("class")}}function ca(t){if(t){if("object"===typeof t){var e={};return!1!==t.css&&D(e,ua(t.name||"v")),D(e,t),e}return"string"===typeof t?ua(t):void 0}}var ua=S((function(t){return{enterClass:t+"-enter",enterToClass:t+"-enter-to",enterActiveClass:t+"-enter-active",leaveClass:t+"-leave",leaveToClass:t+"-leave-to",leaveActiveClass:t+"-leave-active"}})),la=Z&&!rt,fa="transition",pa="animation",da="transition",ha="transitionend",va="animation",ma="animationend";la&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&(da="WebkitTransition",ha="webkitTransitionEnd"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(va="WebkitAnimation",ma="webkitAnimationEnd"));var ga=Z?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:function(t){return t()};function ya(t){ga((function(){ga(t)}))}function ba(t,e){var n=t._transitionClasses||(t._transitionClasses=[]);n.indexOf(e)<0&&(n.push(e),aa(t,e))}function wa(t,e){t._transitionClasses&&b(t._transitionClasses,e),sa(t,e)}function xa(t,e,n){var r=Oa(t,e),o=r.type,i=r.timeout,a=r.propCount;if(!o)return n();var s=o===fa?ha:ma,c=0,u=function(){t.removeEventListener(s,l),n()},l=function(e){e.target===t&&++c>=a&&u()};setTimeout((function(){c0&&(n=fa,l=a,f=i.length):e===pa?u>0&&(n=pa,l=u,f=c.length):(l=Math.max(a,u),n=l>0?a>u?fa:pa:null,f=n?n===fa?i.length:c.length:0);var p=n===fa&&Sa.test(r[da+"Property"]);return{type:n,timeout:l,propCount:f,hasTransform:p}}function _a(t,e){while(t.length1}function Ta(t,e){!0!==e.data.show&&Ca(e)}var $a=Z?{create:Ta,activate:Ta,remove:function(t,e){!0!==t.data.show?Ma(t,e):e()}}:{},Da=[Ko,ei,Bi,Ui,oa,$a],Na=Da.concat(qo),Pa=jo({nodeOps:Mo,modules:Na});rt&&document.addEventListener("selectionchange",(function(){var t=document.activeElement;t&&t.vmodel&&Va(t,"input")}));var ja={inserted:function(t,e,n,r){"select"===n.tag?(r.elm&&!r.elm._vOptions?Oe(n,"postpatch",(function(){ja.componentUpdated(t,e,n)})):Ia(t,e,n.context),t._vOptions=[].map.call(t.options,za)):("textarea"===n.tag||po(t.type))&&(t._vModifiers=e.modifiers,e.modifiers.lazy||(t.addEventListener("compositionstart",Fa),t.addEventListener("compositionend",Ba),t.addEventListener("change",Ba),rt&&(t.vmodel=!0)))},componentUpdated:function(t,e,n){if("select"===n.tag){Ia(t,e,n.context);var r=t._vOptions,o=t._vOptions=[].map.call(t.options,za);if(o.some((function(t,e){return!L(t,r[e])}))){var i=t.multiple?e.value.some((function(t){return La(t,o)})):e.value!==e.oldValue&&La(e.value,o);i&&Va(t,"change")}}}};function Ia(t,e,n){Ra(t,e,n),(nt||ot)&&setTimeout((function(){Ra(t,e,n)}),0)}function Ra(t,e,n){var r=e.value,o=t.multiple;if(!o||Array.isArray(r)){for(var i,a,s=0,c=t.options.length;s-1,a.selected!==i&&(a.selected=i);else if(L(za(a),r))return void(t.selectedIndex!==s&&(t.selectedIndex=s));o||(t.selectedIndex=-1)}}function La(t,e){return e.every((function(e){return!L(e,t)}))}function za(t){return"_value"in t?t._value:t.value}function Fa(t){t.target.composing=!0}function Ba(t){t.target.composing&&(t.target.composing=!1,Va(t.target,"input"))}function Va(t,e){var n=document.createEvent("HTMLEvents");n.initEvent(e,!0,!0),t.dispatchEvent(n)}function qa(t){return!t.componentInstance||t.data&&t.data.transition?t:qa(t.componentInstance._vnode)}var Ha={bind:function(t,e,n){var r=e.value;n=qa(n);var o=n.data&&n.data.transition,i=t.__vOriginalDisplay="none"===t.style.display?"":t.style.display;r&&o?(n.data.show=!0,Ca(n,(function(){t.style.display=i}))):t.style.display=r?i:"none"},update:function(t,e,n){var r=e.value,o=e.oldValue;if(!r!==!o){n=qa(n);var i=n.data&&n.data.transition;i?(n.data.show=!0,r?Ca(n,(function(){t.style.display=t.__vOriginalDisplay})):Ma(n,(function(){t.style.display="none"}))):t.style.display=r?t.__vOriginalDisplay:"none"}},unbind:function(t,e,n,r,o){o||(t.style.display=t.__vOriginalDisplay)}},Wa={model:ja,show:Ha},Ua={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]};function Ka(t){var e=t&&t.componentOptions;return e&&e.Ctor.options.abstract?Ka(kn(e.children)):t}function Ja(t){var e={},n=t.$options;for(var r in n.propsData)e[r]=t[r];var o=n._parentListeners;for(var i in o)e[_(i)]=o[i];return e}function Ya(t,e){if(/\d-keep-alive$/.test(e.tag))return t("keep-alive",{props:e.componentOptions.propsData})}function Ga(t){while(t=t.parent)if(t.data.transition)return!0}function Xa(t,e){return e.key===t.key&&e.tag===t.tag}var Za=function(t){return t.tag||_n(t)},Qa=function(t){return"show"===t.name},ts={name:"transition",props:Ua,abstract:!0,render:function(t){var e=this,n=this.$slots.default;if(n&&(n=n.filter(Za),n.length)){0;var r=this.mode;0;var o=n[0];if(Ga(this.$vnode))return o;var i=Ka(o);if(!i)return o;if(this._leaving)return Ya(t,o);var a="__transition-"+this._uid+"-";i.key=null==i.key?i.isComment?a+"comment":a+i.tag:s(i.key)?0===String(i.key).indexOf(a)?i.key:a+i.key:i.key;var c=(i.data||(i.data={})).transition=Ja(this),u=this._vnode,l=Ka(u);if(i.data.directives&&i.data.directives.some(Qa)&&(i.data.show=!0),l&&l.data&&!Xa(i,l)&&!_n(l)&&(!l.componentInstance||!l.componentInstance._vnode.isComment)){var f=l.data.transition=D({},c);if("out-in"===r)return this._leaving=!0,Oe(f,"afterLeave",(function(){e._leaving=!1,e.$forceUpdate()})),Ya(t,o);if("in-out"===r){if(_n(i))return u;var p,d=function(){p()};Oe(c,"afterEnter",d),Oe(c,"enterCancelled",d),Oe(f,"delayLeave",(function(t){p=t}))}}return o}}},es=D({tag:String,moveClass:String},Ua);delete es.mode;var ns={props:es,beforeMount:function(){var t=this,e=this._update;this._update=function(n,r){var o=Nn(t);t.__patch__(t._vnode,t.kept,!1,!0),t._vnode=t.kept,o(),e.call(t,n,r)}},render:function(t){for(var e=this.tag||this.$vnode.data.tag||"span",n=Object.create(null),r=this.prevChildren=this.children,o=this.$slots.default||[],i=this.children=[],a=Ja(this),s=0;sc&&(s.push(i=t.slice(c,o)),a.push(JSON.stringify(i)));var u=ri(r[1].trim());a.push("_s("+u+")"),s.push({"@binding":u}),c=o+r[0].length}return c\/=]+)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/,Os=/^\s*((?:v-[\w-]+:|@|:|#)\[[^=]+\][^\s"'<>\/=]*)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/,_s="[a-zA-Z_][\\-\\.0-9_a-zA-Z"+W.source+"]*",ks="((?:"+_s+"\\:)?"+_s+")",Cs=new RegExp("^<"+ks),Ms=/^\s*(\/?)>/,Es=new RegExp("^<\\/"+ks+"[^>]*>"),As=/^]+>/i,Ts=/^",""":'"',"&":"&"," ":"\n"," ":"\t","'":"'"},js=/&(?:lt|gt|quot|amp|#39);/g,Is=/&(?:lt|gt|quot|amp|#39|#10|#9);/g,Rs=m("pre,textarea",!0),Ls=function(t,e){return t&&Rs(t)&&"\n"===e[0]};function zs(t,e){var n=e?Is:js;return t.replace(n,(function(t){return Ps[t]}))}function Fs(t,e){var n,r,o=[],i=e.expectHTML,a=e.isUnaryTag||j,s=e.canBeLeftOpenTag||j,c=0;while(t){if(n=t,r&&Ds(r)){var u=0,l=r.toLowerCase(),f=Ns[l]||(Ns[l]=new RegExp("([\\s\\S]*?)(]*>)","i")),p=t.replace(f,(function(t,n,r){return u=r.length,Ds(l)||"noscript"===l||(n=n.replace(//g,"$1").replace(//g,"$1")),Ls(l,n)&&(n=n.slice(1)),e.chars&&e.chars(n),""}));c+=t.length-p.length,t=p,C(l,c-u,c)}else{var d=t.indexOf("<");if(0===d){if(Ts.test(t)){var h=t.indexOf("--\x3e");if(h>=0){e.shouldKeepComment&&e.comment(t.substring(4,h),c,c+h+3),O(h+3);continue}}if($s.test(t)){var v=t.indexOf("]>");if(v>=0){O(v+2);continue}}var m=t.match(As);if(m){O(m[0].length);continue}var g=t.match(Es);if(g){var y=c;O(g[0].length),C(g[1],y,c);continue}var b=_();if(b){k(b),Ls(b.tagName,t)&&O(1);continue}}var w=void 0,x=void 0,S=void 0;if(d>=0){x=t.slice(d);while(!Es.test(x)&&!Cs.test(x)&&!Ts.test(x)&&!$s.test(x)){if(S=x.indexOf("<",1),S<0)break;d+=S,x=t.slice(d)}w=t.substring(0,d)}d<0&&(w=t),w&&O(w.length),e.chars&&w&&e.chars(w,c-w.length,c)}if(t===n){e.chars&&e.chars(t);break}}function O(e){c+=e,t=t.substring(e)}function _(){var e=t.match(Cs);if(e){var n,r,o={tagName:e[1],attrs:[],start:c};O(e[0].length);while(!(n=t.match(Ms))&&(r=t.match(Os)||t.match(Ss)))r.start=c,O(r[0].length),r.end=c,o.attrs.push(r);if(n)return o.unarySlash=n[1],O(n[0].length),o.end=c,o}}function k(t){var n=t.tagName,c=t.unarySlash;i&&("p"===r&&xs(n)&&C(r),s(n)&&r===n&&C(n));for(var u=a(n)||!!c,l=t.attrs.length,f=new Array(l),p=0;p=0;a--)if(o[a].lowerCasedTag===s)break}else a=0;if(a>=0){for(var u=o.length-1;u>=a;u--)e.end&&e.end(o[u].tag,n,i);o.length=a,r=a&&o[a-1].tag}else"br"===s?e.start&&e.start(t,[],!0,n,i):"p"===s&&(e.start&&e.start(t,[],!1,n,i),e.end&&e.end(t,n,i))}C()}var Bs,Vs,qs,Hs,Ws,Us,Ks,Js,Ys=/^@|^v-on:/,Gs=/^v-|^@|^:|^#/,Xs=/([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/,Zs=/,([^,\}\]]*)(?:,([^,\}\]]*))?$/,Qs=/^\(|\)$/g,tc=/^\[.*\]$/,ec=/:(.*)$/,nc=/^:|^\.|^v-bind:/,rc=/\.[^.\]]+(?=[^\]]*$)/g,oc=/^v-slot(:|$)|^#/,ic=/[\r\n]/,ac=/\s+/g,sc=S(ys.decode),cc="_empty_";function uc(t,e,n){return{type:1,tag:t,attrsList:e,attrsMap:Tc(e),rawAttrsMap:{},parent:n,children:[]}}function lc(t,e){Bs=e.warn||ii,Us=e.isPreTag||j,Ks=e.mustUseProp||j,Js=e.getTagNamespace||j;var n=e.isReservedTag||j;(function(t){return!!t.component||!n(t.tag)}),qs=ai(e.modules,"transformNode"),Hs=ai(e.modules,"preTransformNode"),Ws=ai(e.modules,"postTransformNode"),Vs=e.delimiters;var r,o,i=[],a=!1!==e.preserveWhitespace,s=e.whitespace,c=!1,u=!1;function l(t){if(f(t),c||t.processed||(t=dc(t,e)),i.length||t===r||r.if&&(t.elseif||t.else)&&xc(r,{exp:t.elseif,block:t}),o&&!t.forbidden)if(t.elseif||t.else)bc(t,o);else{if(t.slotScope){var n=t.slotTarget||'"default"';(o.scopedSlots||(o.scopedSlots={}))[n]=t}o.children.push(t),t.parent=o}t.children=t.children.filter((function(t){return!t.slotScope})),f(t),t.pre&&(c=!1),Us(t.tag)&&(u=!1);for(var a=0;a|^function(?:\s+[\w$]+)?\s*\(/,tu=/\([^)]*?\);*$/,eu=/^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*|\['[^']*?']|\["[^"]*?"]|\[\d+]|\[[A-Za-z_$][\w$]*])*$/,nu={esc:27,tab:9,enter:13,space:32,up:38,left:37,right:39,down:40,delete:[8,46]},ru={esc:["Esc","Escape"],tab:"Tab",enter:"Enter",space:[" ","Spacebar"],up:["Up","ArrowUp"],left:["Left","ArrowLeft"],right:["Right","ArrowRight"],down:["Down","ArrowDown"],delete:["Backspace","Delete","Del"]},ou=function(t){return"if("+t+")return null;"},iu={stop:"$event.stopPropagation();",prevent:"$event.preventDefault();",self:ou("$event.target !== $event.currentTarget"),ctrl:ou("!$event.ctrlKey"),shift:ou("!$event.shiftKey"),alt:ou("!$event.altKey"),meta:ou("!$event.metaKey"),left:ou("'button' in $event && $event.button !== 0"),middle:ou("'button' in $event && $event.button !== 1"),right:ou("'button' in $event && $event.button !== 2")};function au(t,e){var n=e?"nativeOn:":"on:",r="",o="";for(var i in t){var a=su(t[i]);t[i]&&t[i].dynamic?o+=i+","+a+",":r+='"'+i+'":'+a+","}return r="{"+r.slice(0,-1)+"}",o?n+"_d("+r+",["+o.slice(0,-1)+"])":n+r}function su(t){if(!t)return"function(){}";if(Array.isArray(t))return"["+t.map((function(t){return su(t)})).join(",")+"]";var e=eu.test(t.value),n=Qc.test(t.value),r=eu.test(t.value.replace(tu,""));if(t.modifiers){var o="",i="",a=[];for(var s in t.modifiers)if(iu[s])i+=iu[s],nu[s]&&a.push(s);else if("exact"===s){var c=t.modifiers;i+=ou(["ctrl","shift","alt","meta"].filter((function(t){return!c[t]})).map((function(t){return"$event."+t+"Key"})).join("||"))}else a.push(s);a.length&&(o+=cu(a)),i&&(o+=i);var u=e?"return "+t.value+"($event)":n?"return ("+t.value+")($event)":r?"return "+t.value:t.value;return"function($event){"+o+u+"}"}return e||n?t.value:"function($event){"+(r?"return "+t.value:t.value)+"}"}function cu(t){return"if(!$event.type.indexOf('key')&&"+t.map(uu).join("&&")+")return null;"}function uu(t){var e=parseInt(t,10);if(e)return"$event.keyCode!=="+e;var n=nu[t],r=ru[t];return"_k($event.keyCode,"+JSON.stringify(t)+","+JSON.stringify(n)+",$event.key,"+JSON.stringify(r)+")"}function lu(t,e){t.wrapListeners=function(t){return"_g("+t+","+e.value+")"}}function fu(t,e){t.wrapData=function(n){return"_b("+n+",'"+t.tag+"',"+e.value+","+(e.modifiers&&e.modifiers.prop?"true":"false")+(e.modifiers&&e.modifiers.sync?",true":"")+")"}}var pu={on:lu,bind:fu,cloak:P},du=function(t){this.options=t,this.warn=t.warn||ii,this.transforms=ai(t.modules,"transformCode"),this.dataGenFns=ai(t.modules,"genData"),this.directives=D(D({},pu),t.directives);var e=t.isReservedTag||j;this.maybeComponent=function(t){return!!t.component||!e(t.tag)},this.onceId=0,this.staticRenderFns=[],this.pre=!1};function hu(t,e){var n=new du(e),r=t?vu(t,n):'_c("div")';return{render:"with(this){return "+r+"}",staticRenderFns:n.staticRenderFns}}function vu(t,e){if(t.parent&&(t.pre=t.pre||t.parent.pre),t.staticRoot&&!t.staticProcessed)return mu(t,e);if(t.once&&!t.onceProcessed)return gu(t,e);if(t.for&&!t.forProcessed)return wu(t,e);if(t.if&&!t.ifProcessed)return yu(t,e);if("template"!==t.tag||t.slotTarget||e.pre){if("slot"===t.tag)return Pu(t,e);var n;if(t.component)n=ju(t.component,t,e);else{var r;(!t.plain||t.pre&&e.maybeComponent(t))&&(r=xu(t,e));var o=t.inlineTemplate?null:Eu(t,e,!0);n="_c('"+t.tag+"'"+(r?","+r:"")+(o?","+o:"")+")"}for(var i=0;i>>0}function Cu(t){return 1===t.type&&("slot"===t.tag||t.children.some(Cu))}function Mu(t,e){var n=t.attrsMap["slot-scope"];if(t.if&&!t.ifProcessed&&!n)return yu(t,e,Mu,"null");if(t.for&&!t.forProcessed)return wu(t,e,Mu);var r=t.slotScope===cc?"":String(t.slotScope),o="function("+r+"){return "+("template"===t.tag?t.if&&n?"("+t.if+")?"+(Eu(t,e)||"undefined")+":undefined":Eu(t,e)||"undefined":vu(t,e))+"}",i=r?"":",proxy:true";return"{key:"+(t.slotTarget||'"default"')+",fn:"+o+i+"}"}function Eu(t,e,n,r,o){var i=t.children;if(i.length){var a=i[0];if(1===i.length&&a.for&&"template"!==a.tag&&"slot"!==a.tag){var s=n?e.maybeComponent(a)?",1":",0":"";return""+(r||vu)(a,e)+s}var c=n?Au(i,e.maybeComponent):0,u=o||$u;return"["+i.map((function(t){return u(t,e)})).join(",")+"]"+(c?","+c:"")}}function Au(t,e){for(var n=0,r=0;r':'
',Bu.innerHTML.indexOf(" ")>0}var Uu=!!Z&&Wu(!1),Ku=!!Z&&Wu(!0),Ju=S((function(t){var e=ho(t);return e&&e.innerHTML})),Yu=kr.prototype.$mount;function Gu(t){if(t.outerHTML)return t.outerHTML;var e=document.createElement("div");return e.appendChild(t.cloneNode(!0)),e.innerHTML}kr.prototype.$mount=function(t,e){if(t=t&&ho(t),t===document.body||t===document.documentElement)return this;var n=this.$options;if(!n.render){var r=n.template;if(r)if("string"===typeof r)"#"===r.charAt(0)&&(r=Ju(r));else{if(!r.nodeType)return this;r=r.innerHTML}else t&&(r=Gu(t));if(r){0;var o=Hu(r,{outputSourceRange:!1,shouldDecodeNewlines:Uu,shouldDecodeNewlinesForHref:Ku,delimiters:n.delimiters,comments:n.comments},this),i=o.render,a=o.staticRenderFns;n.render=i,n.staticRenderFns=a}}return Yu.call(this,t,e)},kr.compile=Hu,e["a"]=kr}).call(this,n("c8ba"))},a640:function(t,e,n){"use strict";var r=n("d039");t.exports=function(t,e){var n=[][t];return!!n&&r((function(){n.call(null,e||function(){throw 1},1)}))}},a691:function(t,e){var n=Math.ceil,r=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?r:n)(t)}},aa47:function(t,e,n){"use strict"; /**! * Sortable 1.10.2 * @author RubaXa * @author owenm * @license MIT */ -function r(t){return r="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r(t)}function o(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function i(){return i=Object.assign||function(t){for(var e=1;e=0||(o[n]=t[n]);return o}function c(t,e){if(null==t)return{};var n,r,o=s(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}function u(t){return l(t)||f(t)||d()}function l(t){if(Array.isArray(t)){for(var e=0,n=new Array(t.length);e"===e[0]&&(e=e.substring(1)),t)try{if(t.matches)return t.matches(e);if(t.msMatchesSelector)return t.msMatchesSelector(e);if(t.webkitMatchesSelector)return t.webkitMatchesSelector(e)}catch(n){return!1}return!1}}function E(t){return t.host&&t!==document&&t.host.nodeType?t.host:t.parentNode}function C(t,e,n,r){if(t){n=n||document;do{if(null!=e&&(">"===e[0]?t.parentNode===n&&O(t,e):O(t,e))||r&&t===n)return t;if(t===n)break}while(t=E(t))}return null}var A,$=/\s+/g;function k(t,e,n){if(t&&e)if(t.classList)t.classList[n?"add":"remove"](e);else{var r=(" "+t.className+" ").replace($," ").replace(" "+e+" "," ");t.className=(r+(n?" "+e:"")).replace($," ")}}function M(t,e,n){var r=t&&t.style;if(r){if(void 0===n)return document.defaultView&&document.defaultView.getComputedStyle?n=document.defaultView.getComputedStyle(t,""):t.currentStyle&&(n=t.currentStyle),void 0===e?n:n[e];e in r||-1!==e.indexOf("webkit")||(e="-webkit-"+e),r[e]=n+("string"===typeof n?"":"px")}}function T(t,e){var n="";if("string"===typeof t)n=t;else do{var r=M(t,"transform");r&&"none"!==r&&(n=r+" "+n)}while(!e&&(t=t.parentNode));var o=window.DOMMatrix||window.WebKitCSSMatrix||window.CSSMatrix||window.MSCSSMatrix;return o&&new o(n)}function j(t,e,n){if(t){var r=t.getElementsByTagName(e),o=0,i=r.length;if(n)for(;o=i:o<=i,!a)return r;if(r===P())break;r=U(r,!1)}return!1}function L(t,e,n){var r=0,o=0,i=t.children;while(o2&&void 0!==arguments[2]?arguments[2]:{},r=n.evt,o=c(n,["evt"]);nt.pluginEvent.bind(Zt)(t,e,a({dragEl:at,parentEl:st,ghostEl:ct,rootEl:ut,nextEl:lt,lastDownEl:ft,cloneEl:dt,cloneHidden:pt,dragStarted:Ct,putSortable:bt,activeSortable:Zt.active,originalEvent:r,oldIndex:ht,oldDraggableIndex:gt,newIndex:vt,newDraggableIndex:mt,hideGhostForTarget:Wt,unhideGhostForTarget:Kt,cloneNowHidden:function(){pt=!0},cloneNowShown:function(){pt=!1},dispatchSortableEvent:function(t){it({sortable:e,name:t,originalEvent:r})}},o))};function it(t){rt(a({putSortable:bt,cloneEl:dt,targetEl:at,rootEl:ut,oldIndex:ht,oldDraggableIndex:gt,newIndex:vt,newDraggableIndex:mt},t))}var at,st,ct,ut,lt,ft,dt,pt,ht,vt,gt,mt,yt,bt,wt,_t,xt,St,Ot,Et,Ct,At,$t,kt,Mt,Tt=!1,jt=!1,Pt=[],Dt=!1,It=!1,Lt=[],Nt=!1,Rt=[],Ft="undefined"!==typeof document,zt=b,Ut=g||v?"cssFloat":"float",Ht=Ft&&!w&&!b&&"draggable"in document.createElement("div"),Bt=function(){if(Ft){if(v)return!1;var t=document.createElement("x");return t.style.cssText="pointer-events:auto","auto"===t.style.pointerEvents}}(),Vt=function(t,e){var n=M(t),r=parseInt(n.width)-parseInt(n.paddingLeft)-parseInt(n.paddingRight)-parseInt(n.borderLeftWidth)-parseInt(n.borderRightWidth),o=L(t,0,e),i=L(t,1,e),a=o&&M(o),s=i&&M(i),c=a&&parseInt(a.marginLeft)+parseInt(a.marginRight)+D(o).width,u=s&&parseInt(s.marginLeft)+parseInt(s.marginRight)+D(i).width;if("flex"===n.display)return"column"===n.flexDirection||"column-reverse"===n.flexDirection?"vertical":"horizontal";if("grid"===n.display)return n.gridTemplateColumns.split(" ").length<=1?"vertical":"horizontal";if(o&&a["float"]&&"none"!==a["float"]){var l="left"===a["float"]?"left":"right";return!i||"both"!==s.clear&&s.clear!==l?"horizontal":"vertical"}return o&&("block"===a.display||"flex"===a.display||"table"===a.display||"grid"===a.display||c>=r&&"none"===n[Ut]||i&&"none"===n[Ut]&&c+u>r)?"vertical":"horizontal"},Yt=function(t,e,n){var r=n?t.left:t.top,o=n?t.right:t.bottom,i=n?t.width:t.height,a=n?e.left:e.top,s=n?e.right:e.bottom,c=n?e.width:e.height;return r===a||o===s||r+i/2===a+c/2},qt=function(t,e){var n;return Pt.some((function(r){if(!N(r)){var o=D(r),i=r[X].options.emptyInsertThreshold,a=t>=o.left-i&&t<=o.right+i,s=e>=o.top-i&&e<=o.bottom+i;return i&&a&&s?n=r:void 0}})),n},Gt=function(t){function e(t,n){return function(r,o,i,a){var s=r.options.group.name&&o.options.group.name&&r.options.group.name===o.options.group.name;if(null==t&&(n||s))return!0;if(null==t||!1===t)return!1;if(n&&"clone"===t)return t;if("function"===typeof t)return e(t(r,o,i,a),n)(r,o,i,a);var c=(n?r:o).options.group.name;return!0===t||"string"===typeof t&&t===c||t.join&&t.indexOf(c)>-1}}var n={},o=t.group;o&&"object"==r(o)||(o={name:o}),n.name=o.name,n.checkPull=e(o.pull,!0),n.checkPut=e(o.put),n.revertClone=o.revertClone,t.group=n},Wt=function(){!Bt&&ct&&M(ct,"display","none")},Kt=function(){!Bt&&ct&&M(ct,"display","")};Ft&&document.addEventListener("click",(function(t){if(jt)return t.preventDefault(),t.stopPropagation&&t.stopPropagation(),t.stopImmediatePropagation&&t.stopImmediatePropagation(),jt=!1,!1}),!0);var Xt=function(t){if(at){t=t.touches?t.touches[0]:t;var e=qt(t.clientX,t.clientY);if(e){var n={};for(var r in t)t.hasOwnProperty(r)&&(n[r]=t[r]);n.target=n.rootEl=e,n.preventDefault=void 0,n.stopPropagation=void 0,e[X]._onDragOver(n)}}},Jt=function(t){at&&at.parentNode[X]._isOutsideThisEl(t.target)};function Zt(t,e){if(!t||!t.nodeType||1!==t.nodeType)throw"Sortable: `el` must be an HTMLElement, not ".concat({}.toString.call(t));this.el=t,this.options=e=i({},e),t[X]=this;var n={group:null,sort:!0,disabled:!1,store:null,handle:null,draggable:/^[uo]l$/i.test(t.nodeName)?">li":">*",swapThreshold:1,invertSwap:!1,invertedSwapThreshold:null,removeCloneOnHide:!0,direction:function(){return Vt(t,this.options)},ghostClass:"sortable-ghost",chosenClass:"sortable-chosen",dragClass:"sortable-drag",ignore:"a, img",filter:null,preventOnFilter:!0,animation:0,easing:null,setData:function(t,e){t.setData("Text",e.textContent)},dropBubble:!1,dragoverBubble:!1,dataIdAttr:"data-id",delay:0,delayOnTouchOnly:!1,touchStartThreshold:(Number.parseInt?Number:window).parseInt(window.devicePixelRatio,10)||1,forceFallback:!1,fallbackClass:"sortable-fallback",fallbackOnBody:!1,fallbackTolerance:0,fallbackOffset:{x:0,y:0},supportPointer:!1!==Zt.supportPointer&&"PointerEvent"in window,emptyInsertThreshold:5};for(var r in nt.initializePlugins(this,t,n),n)!(r in e)&&(e[r]=n[r]);for(var o in Gt(e),this)"_"===o.charAt(0)&&"function"===typeof this[o]&&(this[o]=this[o].bind(this));this.nativeDraggable=!e.forceFallback&&Ht,this.nativeDraggable&&(this.options.touchStartThreshold=1),e.supportPointer?x(t,"pointerdown",this._onTapStart):(x(t,"mousedown",this._onTapStart),x(t,"touchstart",this._onTapStart)),this.nativeDraggable&&(x(t,"dragover",this),x(t,"dragenter",this)),Pt.push(this.el),e.store&&e.store.get&&this.sort(e.store.get(this)||[]),i(this,J())}function Qt(t){t.dataTransfer&&(t.dataTransfer.dropEffect="move"),t.cancelable&&t.preventDefault()}function te(t,e,n,r,o,i,a,s){var c,u,l=t[X],f=l.options.onMove;return!window.CustomEvent||v||g?(c=document.createEvent("Event"),c.initEvent("move",!0,!0)):c=new CustomEvent("move",{bubbles:!0,cancelable:!0}),c.to=e,c.from=t,c.dragged=n,c.draggedRect=r,c.related=o||e,c.relatedRect=i||D(e),c.willInsertAfter=s,c.originalEvent=a,t.dispatchEvent(c),f&&(u=f.call(l,c,a)),u}function ee(t){t.draggable=!1}function ne(){Nt=!1}function re(t,e,n){var r=D(N(n.el,n.options.draggable)),o=10;return e?t.clientX>r.right+o||t.clientX<=r.right&&t.clientY>r.bottom&&t.clientX>=r.left:t.clientX>r.right&&t.clientY>r.top||t.clientX<=r.right&&t.clientY>r.bottom+o}function oe(t,e,n,r,o,i,a,s){var c=r?t.clientY:t.clientX,u=r?n.height:n.width,l=r?n.top:n.left,f=r?n.bottom:n.right,d=!1;if(!a)if(s&&ktl+u*i/2:cf-kt)return-$t}else if(c>l+u*(1-o)/2&&cf-u*i/2)?c>l+u/2?1:-1:0}function ie(t){return R(at)=Math.floor(this.options.touchStartThreshold/(this.nativeDraggable&&window.devicePixelRatio||1))&&this._disableDelayedDrag()},_disableDelayedDrag:function(){at&&ee(at),clearTimeout(this._dragStartTimer),this._disableDelayedDragEvents()},_disableDelayedDragEvents:function(){var t=this.el.ownerDocument;S(t,"mouseup",this._disableDelayedDrag),S(t,"touchend",this._disableDelayedDrag),S(t,"touchcancel",this._disableDelayedDrag),S(t,"mousemove",this._delayedDragTouchMoveHandler),S(t,"touchmove",this._delayedDragTouchMoveHandler),S(t,"pointermove",this._delayedDragTouchMoveHandler)},_triggerDragStart:function(t,e){e=e||"touch"==t.pointerType&&t,!this.nativeDraggable||e?this.options.supportPointer?x(document,"pointermove",this._onTouchMove):x(document,e?"touchmove":"mousemove",this._onTouchMove):(x(at,"dragend",this),x(ut,"dragstart",this._onDragStart));try{document.selection?ce((function(){document.selection.empty()})):window.getSelection().removeAllRanges()}catch(n){}},_dragStarted:function(t,e){if(Tt=!1,ut&&at){ot("dragStarted",this,{evt:e}),this.nativeDraggable&&x(document,"dragover",Jt);var n=this.options;!t&&k(at,n.dragClass,!1),k(at,n.ghostClass,!0),Zt.active=this,t&&this._appendGhost(),it({sortable:this,name:"start",originalEvent:e})}else this._nulling()},_emulateDragOver:function(){if(_t){this._lastX=_t.clientX,this._lastY=_t.clientY,Wt();var t=document.elementFromPoint(_t.clientX,_t.clientY),e=t;while(t&&t.shadowRoot){if(t=t.shadowRoot.elementFromPoint(_t.clientX,_t.clientY),t===e)break;e=t}if(at.parentNode[X]._isOutsideThisEl(t),e)do{if(e[X]){var n=void 0;if(n=e[X]._onDragOver({clientX:_t.clientX,clientY:_t.clientY,target:t,rootEl:e}),n&&!this.options.dragoverBubble)break}t=e}while(e=e.parentNode);Kt()}},_onTouchMove:function(t){if(wt){var e=this.options,n=e.fallbackTolerance,r=e.fallbackOffset,o=t.touches?t.touches[0]:t,i=ct&&T(ct,!0),a=ct&&i&&i.a,s=ct&&i&&i.d,c=zt&&Mt&&F(Mt),u=(o.clientX-wt.clientX+r.x)/(a||1)+(c?c[0]-Lt[0]:0)/(a||1),l=(o.clientY-wt.clientY+r.y)/(s||1)+(c?c[1]-Lt[1]:0)/(s||1);if(!Zt.active&&!Tt){if(n&&Math.max(Math.abs(o.clientX-this._lastX),Math.abs(o.clientY-this._lastY))=0&&(it({rootEl:st,name:"add",toEl:st,fromEl:ut,originalEvent:t}),it({sortable:this,name:"remove",toEl:st,originalEvent:t}),it({rootEl:st,name:"sort",toEl:st,fromEl:ut,originalEvent:t}),it({sortable:this,name:"sort",toEl:st,originalEvent:t})),bt&&bt.save()):vt!==ht&&vt>=0&&(it({sortable:this,name:"update",toEl:st,originalEvent:t}),it({sortable:this,name:"sort",toEl:st,originalEvent:t})),Zt.active&&(null!=vt&&-1!==vt||(vt=ht,mt=gt),it({sortable:this,name:"end",toEl:st,originalEvent:t}),this.save()))),this._nulling())},_nulling:function(){ot("nulling",this),ut=at=st=ct=lt=dt=ft=pt=wt=_t=Ct=vt=mt=ht=gt=At=$t=bt=yt=Zt.dragged=Zt.ghost=Zt.clone=Zt.active=null,Rt.forEach((function(t){t.checked=!0})),Rt.length=xt=St=0},handleEvent:function(t){switch(t.type){case"drop":case"dragend":this._onDrop(t);break;case"dragenter":case"dragover":at&&(this._onDragOver(t),Qt(t));break;case"selectstart":t.preventDefault();break}},toArray:function(){for(var t,e=[],n=this.el.children,r=0,o=n.length,i=this.options;r1&&(Pe.forEach((function(t){r.addAnimationState({target:t,rect:Le?D(t):o}),K(t),t.fromRect=o,e.removeAnimationState(t)})),Le=!1,Fe(!this.options.removeCloneOnHide,n))},dragOverCompleted:function(t){var e=t.sortable,n=t.isOwner,r=t.insertion,o=t.activeSortable,i=t.parentEl,a=t.putSortable,s=this.options;if(r){if(n&&o._hideClone(),Ie=!1,s.animation&&Pe.length>1&&(Le||!n&&!o.options.sort&&!a)){var c=D(Me,!1,!0,!0);Pe.forEach((function(t){t!==Me&&(W(t,c),i.appendChild(t))})),Le=!0}if(!n)if(Le||Ue(),Pe.length>1){var u=je;o._showClone(e),o.options.animation&&!je&&u&&De.forEach((function(t){o.addAnimationState({target:t,rect:Te}),t.fromRect=Te,t.thisAnimationDuration=null}))}else o._showClone(e)}},dragOverAnimationCapture:function(t){var e=t.dragRect,n=t.isOwner,r=t.activeSortable;if(Pe.forEach((function(t){t.thisAnimationDuration=null})),r.options.animation&&!n&&r.multiDrag.isMultiDrag){Te=i({},e);var o=T(Me,!0);Te.top-=o.f,Te.left-=o.e}},dragOverAnimationComplete:function(){Le&&(Le=!1,Ue())},drop:function(t){var e=t.originalEvent,n=t.rootEl,r=t.parentEl,o=t.sortable,i=t.dispatchSortableEvent,a=t.oldIndex,s=t.putSortable,c=s||this.sortable;if(e){var u=this.options,l=r.children;if(!Ne)if(u.multiDragKey&&!this.multiDragKeyDown&&this._deselectMultiDrag(),k(Me,u.selectedClass,!~Pe.indexOf(Me)),~Pe.indexOf(Me))Pe.splice(Pe.indexOf(Me),1),$e=null,rt({sortable:o,rootEl:n,name:"deselect",targetEl:Me,originalEvt:e});else{if(Pe.push(Me),rt({sortable:o,rootEl:n,name:"select",targetEl:Me,originalEvt:e}),e.shiftKey&&$e&&o.el.contains($e)){var f,d,p=R($e),h=R(Me);if(~p&&~h&&p!==h)for(h>p?(d=p,f=h):(d=h,f=p+1);d1){var v=D(Me),g=R(Me,":not(."+this.options.selectedClass+")");if(!Ie&&u.animation&&(Me.thisAnimationDuration=null),c.captureAnimationState(),!Ie&&(u.animation&&(Me.fromRect=v,Pe.forEach((function(t){if(t.thisAnimationDuration=null,t!==Me){var e=Le?D(t):v;t.fromRect=e,c.addAnimationState({target:t,rect:e})}}))),Ue(),Pe.forEach((function(t){l[g]?r.insertBefore(t,l[g]):r.appendChild(t),g++})),a===R(Me))){var m=!1;Pe.forEach((function(t){t.sortableIndex===R(t)||(m=!0)})),m&&i("update")}Pe.forEach((function(t){K(t)})),c.animateAll()}ke=c}(n===r||s&&"clone"!==s.lastPutMode)&&De.forEach((function(t){t.parentNode&&t.parentNode.removeChild(t)}))}},nullingGlobal:function(){this.isMultiDrag=Ne=!1,De.length=0},destroyGlobal:function(){this._deselectMultiDrag(),S(document,"pointerup",this._deselectMultiDrag),S(document,"mouseup",this._deselectMultiDrag),S(document,"touchend",this._deselectMultiDrag),S(document,"keydown",this._checkKeyDown),S(document,"keyup",this._checkKeyUp)},_deselectMultiDrag:function(t){if(("undefined"===typeof Ne||!Ne)&&ke===this.sortable&&(!t||!C(t.target,this.options.draggable,this.sortable.el,!1))&&(!t||0===t.button))while(Pe.length){var e=Pe[0];k(e,this.options.selectedClass,!1),Pe.shift(),rt({sortable:this.sortable,rootEl:this.sortable.el,name:"deselect",targetEl:e,originalEvt:t})}},_checkKeyDown:function(t){t.key===this.options.multiDragKey&&(this.multiDragKeyDown=!0)},_checkKeyUp:function(t){t.key===this.options.multiDragKey&&(this.multiDragKeyDown=!1)}},i(t,{pluginName:"multiDrag",utils:{select:function(t){var e=t.parentNode[X];e&&e.options.multiDrag&&!~Pe.indexOf(t)&&(ke&&ke!==e&&(ke.multiDrag._deselectMultiDrag(),ke=e),k(t,e.options.selectedClass,!0),Pe.push(t))},deselect:function(t){var e=t.parentNode[X],n=Pe.indexOf(t);e&&e.options.multiDrag&&~n&&(k(t,e.options.selectedClass,!1),Pe.splice(n,1))}},eventProperties:function(){var t=this,e=[],n=[];return Pe.forEach((function(r){var o;e.push({multiDragElement:r,index:r.sortableIndex}),o=Le&&r!==Me?-1:Le?R(r,":not(."+t.options.selectedClass+")"):R(r),n.push({multiDragElement:r,index:o})})),{items:u(Pe),clones:[].concat(De),oldIndicies:e,newIndicies:n}},optionListeners:{multiDragKey:function(t){return t=t.toLowerCase(),"ctrl"===t?t="Control":t.length>1&&(t=t.charAt(0).toUpperCase()+t.substr(1)),t}}})}function Fe(t,e){Pe.forEach((function(n,r){var o=e.children[n.sortableIndex+(t?Number(r):0)];o?e.insertBefore(n,o):e.appendChild(n)}))}function ze(t,e){De.forEach((function(n,r){var o=e.children[n.sortableIndex+(t?Number(r):0)];o?e.insertBefore(n,o):e.appendChild(n)}))}function Ue(){Pe.forEach((function(t){t!==Me&&t.parentNode&&t.parentNode.removeChild(t)}))}Zt.mount(new ye),Zt.mount(Ee,Oe),e["default"]=Zt},aa82:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n("78ef");e.default=function(t){return(0,r.withParams)({type:"requiredIf",prop:t},(function(e,n){return!(0,r.ref)(t,this,n)||(0,r.req)(e)}))}},ab13:function(t,e,n){var r=n("b622"),o=r("match");t.exports=function(t){var e=/./;try{"/./"[t](e)}catch(n){try{return e[o]=!1,"/./"[t](e)}catch(r){}}return!1}},ac1f:function(t,e,n){"use strict";var r=n("23e7"),o=n("9263");r({target:"RegExp",proto:!0,forced:/./.exec!==o},{exec:o})},ad6d:function(t,e,n){"use strict";var r=n("825a");t.exports=function(){var t=r(this),e="";return t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.dotAll&&(e+="s"),t.unicode&&(e+="u"),t.sticky&&(e+="y"),e}},ae40:function(t,e,n){var r=n("83ab"),o=n("d039"),i=n("5135"),a=Object.defineProperty,s={},c=function(t){throw t};t.exports=function(t,e){if(i(s,t))return s[t];e||(e={});var n=[][t],u=!!i(e,"ACCESSORS")&&e.ACCESSORS,l=i(e,0)?e[0]:c,f=i(e,1)?e[1]:void 0;return s[t]=!!n&&!o((function(){if(u&&!r)return!0;var t={length:-1};u?a(t,1,{enumerable:!0,get:c}):t[1]=1,n.call(t,l,f)}))}},ae93:function(t,e,n){"use strict";var r,o,i,a=n("e163"),s=n("9112"),c=n("5135"),u=n("b622"),l=n("c430"),f=u("iterator"),d=!1,p=function(){return this};[].keys&&(i=[].keys(),"next"in i?(o=a(a(i)),o!==Object.prototype&&(r=o)):d=!0),void 0==r&&(r={}),l||c(r,f)||s(r,f,p),t.exports={IteratorPrototype:r,BUGGY_SAFARI_ITERATORS:d}},af03:function(t,e,n){var r=n("d039");t.exports=function(t){return r((function(){var e=""[t]('"');return e!==e.toLowerCase()||e.split('"').length>3}))}},b041:function(t,e,n){"use strict";var r=n("00ee"),o=n("f5df");t.exports=r?{}.toString:function(){return"[object "+o(this)+"]"}},b0c0:function(t,e,n){var r=n("83ab"),o=n("9bf2").f,i=Function.prototype,a=i.toString,s=/^\s*function ([^ (]*)/,c="name";!r||c in i||o(i,c,{configurable:!0,get:function(){try{return a.call(this).match(s)[1]}catch(t){return""}}})},b575:function(t,e,n){var r,o,i,a,s,c,u,l,f=n("da84"),d=n("06cf").f,p=n("c6b6"),h=n("2cf4").set,v=n("1cdc"),g=f.MutationObserver||f.WebKitMutationObserver,m=f.process,y=f.Promise,b="process"==p(m),w=d(f,"queueMicrotask"),_=w&&w.value;_||(r=function(){var t,e;b&&(t=m.domain)&&t.exit();while(o){e=o.fn,o=o.next;try{e()}catch(n){throw o?a():i=void 0,n}}i=void 0,t&&t.enter()},b?a=function(){m.nextTick(r)}:g&&!v?(s=!0,c=document.createTextNode(""),new g(r).observe(c,{characterData:!0}),a=function(){c.data=s=!s}):y&&y.resolve?(u=y.resolve(void 0),l=u.then,a=function(){l.call(u,r)}):a=function(){h.call(f,r)}),t.exports=_||function(t){var e={fn:t,next:void 0};i&&(i.next=e),o||(o=e,a()),i=e}},b5ae:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.maxValue=e.minValue=e.and=e.or=e.url=e.sameAs=e.requiredUnless=e.requiredIf=e.required=e.minLength=e.maxLength=e.macAddress=e.ipAddress=e.email=e.between=e.numeric=e.alphaNum=e.alpha=void 0;var r=n("6235"),o=F(r),i=n("3a54"),a=F(i),s=n("45b8"),c=F(s),u=n("ec11"),l=F(u),f=n("5d75"),d=F(f),p=n("c99d"),h=F(p),v=n("91d3"),g=F(v),m=n("2a12"),y=F(m),b=n("5db3"),w=F(b),_=n("d4f4"),x=F(_),S=n("aa82"),O=F(S),E=n("e652"),C=F(E),A=n("b6cb"),$=F(A),k=n("772d"),M=F(k),T=n("d294"),j=F(T),P=n("3360"),D=F(P),I=n("eb66"),L=F(I),N=n("46bc"),R=F(N);function F(t){return t&&t.__esModule?t:{default:t}}e.alpha=o.default,e.alphaNum=a.default,e.numeric=c.default,e.between=l.default,e.email=d.default,e.ipAddress=h.default,e.macAddress=g.default,e.maxLength=y.default,e.minLength=w.default,e.required=x.default,e.requiredIf=O.default,e.requiredUnless=C.default,e.sameAs=$.default,e.url=M.default,e.or=j.default,e.and=D.default,e.minValue=L.default,e.maxValue=R.default},b622:function(t,e,n){var r=n("da84"),o=n("5692"),i=n("5135"),a=n("90e3"),s=n("4930"),c=n("fdbf"),u=o("wks"),l=r.Symbol,f=c?l:l&&l.withoutSetter||a;t.exports=function(t){return i(u,t)||(s&&i(l,t)?u[t]=l[t]:u[t]=f("Symbol."+t)),u[t]}},b64b:function(t,e,n){var r=n("23e7"),o=n("7b0b"),i=n("df75"),a=n("d039"),s=a((function(){i(1)}));r({target:"Object",stat:!0,forced:s},{keys:function(t){return i(o(t))}})},b680:function(t,e,n){"use strict";var r=n("23e7"),o=n("a691"),i=n("408a"),a=n("1148"),s=n("d039"),c=1..toFixed,u=Math.floor,l=function(t,e,n){return 0===e?n:e%2===1?l(t,e-1,n*t):l(t*t,e/2,n)},f=function(t){var e=0,n=t;while(n>=4096)e+=12,n/=4096;while(n>=2)e+=1,n/=2;return e},d=c&&("0.000"!==8e-5.toFixed(3)||"1"!==.9.toFixed(0)||"1.25"!==1.255.toFixed(2)||"1000000000000000128"!==(0xde0b6b3a7640080).toFixed(0))||!s((function(){c.call({})}));r({target:"Number",proto:!0,forced:d},{toFixed:function(t){var e,n,r,s,c=i(this),d=o(t),p=[0,0,0,0,0,0],h="",v="0",g=function(t,e){var n=-1,r=e;while(++n<6)r+=t*p[n],p[n]=r%1e7,r=u(r/1e7)},m=function(t){var e=6,n=0;while(--e>=0)n+=p[e],p[e]=u(n/t),n=n%t*1e7},y=function(){var t=6,e="";while(--t>=0)if(""!==e||0===t||0!==p[t]){var n=String(p[t]);e=""===e?n:e+a.call("0",7-n.length)+n}return e};if(d<0||d>20)throw RangeError("Incorrect fraction digits");if(c!=c)return"NaN";if(c<=-1e21||c>=1e21)return String(c);if(c<0&&(h="-",c=-c),c>1e-21)if(e=f(c*l(2,69,1))-69,n=e<0?c*l(2,-e,1):c/l(2,e,1),n*=4503599627370496,e=52-e,e>0){g(0,n),r=d;while(r>=7)g(1e7,0),r-=7;g(l(10,r,1),0),r=e-1;while(r>=23)m(1<<23),r-=23;m(1<0?(s=v.length,v=h+(s<=d?"0."+a.call("0",d-s)+v:v.slice(0,s-d)+"."+v.slice(s-d))):v=h+v,v}})},b6cb:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n("78ef");e.default=function(t){return(0,r.withParams)({type:"sameAs",eq:t},(function(e,n){return e===(0,r.ref)(t,this,n)}))}},b727:function(t,e,n){var r=n("0366"),o=n("44ad"),i=n("7b0b"),a=n("50c4"),s=n("65f0"),c=[].push,u=function(t){var e=1==t,n=2==t,u=3==t,l=4==t,f=6==t,d=5==t||f;return function(p,h,v,g){for(var m,y,b=i(p),w=o(b),_=r(h,v,3),x=a(w.length),S=0,O=g||s,E=e?O(p,x):n?O(p,0):void 0;x>S;S++)if((d||S in w)&&(m=w[S],y=_(m,S,b),t))if(e)E[S]=y;else if(y)switch(t){case 3:return!0;case 5:return m;case 6:return S;case 2:c.call(E,m)}else if(l)return!1;return f?-1:u||l?l:E}};t.exports={forEach:u(0),map:u(1),filter:u(2),some:u(3),every:u(4),find:u(5),findIndex:u(6)}},c04e:function(t,e,n){var r=n("861d");t.exports=function(t,e){if(!r(t))return t;var n,o;if(e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;if("function"==typeof(n=t.valueOf)&&!r(o=n.call(t)))return o;if(!e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;throw TypeError("Can't convert object to primitive value")}},c430:function(t,e){t.exports=!1},c6b6:function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},c6cd:function(t,e,n){var r=n("da84"),o=n("ce4e"),i="__core-js_shared__",a=r[i]||o(i,{});t.exports=a},c740:function(t,e,n){"use strict";var r=n("23e7"),o=n("b727").findIndex,i=n("44d2"),a=n("ae40"),s="findIndex",c=!0,u=a(s);s in[]&&Array(1)[s]((function(){c=!1})),r({target:"Array",proto:!0,forced:c||!u},{findIndex:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}}),i(s)},c8ba:function(t,e){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(r){"object"===typeof window&&(n=window)}t.exports=n},c8d2:function(t,e,n){var r=n("d039"),o=n("5899"),i="​…᠎";t.exports=function(t){return r((function(){return!!o[t]()||i[t]()!=i||o[t].name!==t}))}},c975:function(t,e,n){"use strict";var r=n("23e7"),o=n("4d64").indexOf,i=n("a640"),a=n("ae40"),s=[].indexOf,c=!!s&&1/[1].indexOf(1,-0)<0,u=i("indexOf"),l=a("indexOf",{ACCESSORS:!0,1:0});r({target:"Array",proto:!0,forced:c||!u||!l},{indexOf:function(t){return c?s.apply(this,arguments)||0:o(this,t,arguments.length>1?arguments[1]:void 0)}})},c99d:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n("78ef");e.default=(0,r.withParams)({type:"ipAddress"},(function(t){if(!(0,r.req)(t))return!0;if("string"!==typeof t)return!1;var e=t.split(".");return 4===e.length&&e.every(o)}));var o=function(t){if(t.length>3||0===t.length)return!1;if("0"===t[0]&&"0"!==t)return!1;if(!t.match(/^\d+$/))return!1;var e=0|+t;return e>=0&&e<=255}},ca84:function(t,e,n){var r=n("5135"),o=n("fc6a"),i=n("4d64").indexOf,a=n("d012");t.exports=function(t,e){var n,s=o(t),c=0,u=[];for(n in s)!r(a,n)&&r(s,n)&&u.push(n);while(e.length>c)r(s,n=e[c++])&&(~i(u,n)||u.push(n));return u}},caad:function(t,e,n){"use strict";var r=n("23e7"),o=n("4d64").includes,i=n("44d2"),a=n("ae40"),s=a("indexOf",{ACCESSORS:!0,1:0});r({target:"Array",proto:!0,forced:!s},{includes:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}}),i("includes")},cc12:function(t,e,n){var r=n("da84"),o=n("861d"),i=r.document,a=o(i)&&o(i.createElement);t.exports=function(t){return a?i.createElement(t):{}}},cca6:function(t,e,n){var r=n("23e7"),o=n("60da");r({target:"Object",stat:!0,forced:Object.assign!==o},{assign:o})},cdf9:function(t,e,n){var r=n("825a"),o=n("861d"),i=n("f069");t.exports=function(t,e){if(r(t),o(e)&&e.constructor===t)return e;var n=i.f(t),a=n.resolve;return a(e),n.promise}},ce4e:function(t,e,n){var r=n("da84"),o=n("9112");t.exports=function(t,e){try{o(r,t,e)}catch(n){r[t]=e}return e}},d012:function(t,e){t.exports={}},d039:function(t,e){t.exports=function(t){try{return!!t()}catch(e){return!0}}},d066:function(t,e,n){var r=n("428f"),o=n("da84"),i=function(t){return"function"==typeof t?t:void 0};t.exports=function(t,e){return arguments.length<2?i(r[t])||i(o[t]):r[t]&&r[t][e]||o[t]&&o[t][e]}},d1e7:function(t,e,n){"use strict";var r={}.propertyIsEnumerable,o=Object.getOwnPropertyDescriptor,i=o&&!r.call({1:2},1);e.f=i?function(t){var e=o(this,t);return!!e&&e.enumerable}:r},d294:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n("78ef");e.default=function(){for(var t=arguments.length,e=Array(t),n=0;n0&&e.reduce((function(e,n){return e||n.apply(t,r)}),!1)}))}},d2bb:function(t,e,n){var r=n("825a"),o=n("3bbe");t.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var t,e=!1,n={};try{t=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set,t.call(n,[]),e=n instanceof Array}catch(i){}return function(n,i){return r(n),o(i),e?t.call(n,i):n.__proto__=i,n}}():void 0)},d3b7:function(t,e,n){var r=n("00ee"),o=n("6eeb"),i=n("b041");r||o(Object.prototype,"toString",i,{unsafe:!0})},d44e:function(t,e,n){var r=n("9bf2").f,o=n("5135"),i=n("b622"),a=i("toStringTag");t.exports=function(t,e,n){t&&!o(t=n?t:t.prototype,a)&&r(t,a,{configurable:!0,value:e})}},d4f4:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n("78ef");e.default=(0,r.withParams)({type:"required"},r.req)},d784:function(t,e,n){"use strict";n("ac1f");var r=n("6eeb"),o=n("d039"),i=n("b622"),a=n("9263"),s=n("9112"),c=i("species"),u=!o((function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:"7"},t},"7"!=="".replace(t,"$")})),l=function(){return"$0"==="a".replace(/./,"$0")}(),f=i("replace"),d=function(){return!!/./[f]&&""===/./[f]("a","$0")}(),p=!o((function(){var t=/(?:)/,e=t.exec;t.exec=function(){return e.apply(this,arguments)};var n="ab".split(t);return 2!==n.length||"a"!==n[0]||"b"!==n[1]}));t.exports=function(t,e,n,f){var h=i(t),v=!o((function(){var e={};return e[h]=function(){return 7},7!=""[t](e)})),g=v&&!o((function(){var e=!1,n=/a/;return"split"===t&&(n={},n.constructor={},n.constructor[c]=function(){return n},n.flags="",n[h]=/./[h]),n.exec=function(){return e=!0,null},n[h](""),!e}));if(!v||!g||"replace"===t&&(!u||!l||d)||"split"===t&&!p){var m=/./[h],y=n(h,""[t],(function(t,e,n,r,o){return e.exec===a?v&&!o?{done:!0,value:m.call(e,n,r)}:{done:!0,value:t.call(n,e,r)}:{done:!1}}),{REPLACE_KEEPS_$0:l,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:d}),b=y[0],w=y[1];r(String.prototype,t,b),r(RegExp.prototype,h,2==e?function(t,e){return w.call(t,this,e)}:function(t){return w.call(t,this)})}f&&s(RegExp.prototype[h],"sham",!0)}},d81d:function(t,e,n){"use strict";var r=n("23e7"),o=n("b727").map,i=n("1dde"),a=n("ae40"),s=i("map"),c=a("map");r({target:"Array",proto:!0,forced:!s||!c},{map:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}})},da84:function(t,e,n){(function(e){var n=function(t){return t&&t.Math==Math&&t};t.exports=n("object"==typeof globalThis&&globalThis)||n("object"==typeof window&&window)||n("object"==typeof self&&self)||n("object"==typeof e&&e)||Function("return this")()}).call(this,n("c8ba"))},ddb0:function(t,e,n){var r=n("da84"),o=n("fdbc"),i=n("e260"),a=n("9112"),s=n("b622"),c=s("iterator"),u=s("toStringTag"),l=i.values;for(var f in o){var d=r[f],p=d&&d.prototype;if(p){if(p[c]!==l)try{a(p,c,l)}catch(v){p[c]=l}if(p[u]||a(p,u,f),o[f])for(var h in i)if(p[h]!==i[h])try{a(p,h,i[h])}catch(v){p[h]=i[h]}}}},df75:function(t,e,n){var r=n("ca84"),o=n("7839");t.exports=Object.keys||function(t){return r(t,o)}},e01a:function(t,e,n){"use strict";var r=n("23e7"),o=n("83ab"),i=n("da84"),a=n("5135"),s=n("861d"),c=n("9bf2").f,u=n("e893"),l=i.Symbol;if(o&&"function"==typeof l&&(!("description"in l.prototype)||void 0!==l().description)){var f={},d=function(){var t=arguments.length<1||void 0===arguments[0]?void 0:String(arguments[0]),e=this instanceof d?new l(t):void 0===t?l():l(t);return""===t&&(f[e]=!0),e};u(d,l);var p=d.prototype=l.prototype;p.constructor=d;var h=p.toString,v="Symbol(test)"==String(l("test")),g=/^Symbol\((.*)\)[^)]+$/;c(p,"description",{configurable:!0,get:function(){var t=s(this)?this.valueOf():this,e=h.call(t);if(a(f,t))return"";var n=v?e.slice(7,-1):e.replace(g,"$1");return""===n?void 0:n}}),r({global:!0,forced:!0},{Symbol:d})}},e163:function(t,e,n){var r=n("5135"),o=n("7b0b"),i=n("f772"),a=n("e177"),s=i("IE_PROTO"),c=Object.prototype;t.exports=a?Object.getPrototypeOf:function(t){return t=o(t),r(t,s)?t[s]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?c:null}},e177:function(t,e,n){var r=n("d039");t.exports=!r((function(){function t(){}return t.prototype.constructor=null,Object.getPrototypeOf(new t)!==t.prototype}))},e260:function(t,e,n){"use strict";var r=n("fc6a"),o=n("44d2"),i=n("3f8c"),a=n("69f3"),s=n("7dd0"),c="Array Iterator",u=a.set,l=a.getterFor(c);t.exports=s(Array,"Array",(function(t,e){u(this,{type:c,target:r(t),index:0,kind:e})}),(function(){var t=l(this),e=t.target,n=t.kind,r=t.index++;return!e||r>=e.length?(t.target=void 0,{value:void 0,done:!0}):"keys"==n?{value:r,done:!1}:"values"==n?{value:e[r],done:!1}:{value:[r,e[r]],done:!1}}),"values"),i.Arguments=i.Array,o("keys"),o("values"),o("entries")},e2cc:function(t,e,n){var r=n("6eeb");t.exports=function(t,e,n){for(var o in e)r(t,o,e[o],n);return t}},e538:function(t,e,n){var r=n("b622");e.f=r},e652:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n("78ef");e.default=function(t){return(0,r.withParams)({type:"requiredUnless",prop:t},(function(e,n){return!!(0,r.ref)(t,this,n)||(0,r.req)(e)}))}},e667:function(t,e){t.exports=function(t){try{return{error:!1,value:t()}}catch(e){return{error:!0,value:e}}}},e6cf:function(t,e,n){"use strict";var r,o,i,a,s=n("23e7"),c=n("c430"),u=n("da84"),l=n("d066"),f=n("fea9"),d=n("6eeb"),p=n("e2cc"),h=n("d44e"),v=n("2626"),g=n("861d"),m=n("1c0b"),y=n("19aa"),b=n("c6b6"),w=n("8925"),_=n("2266"),x=n("1c7e"),S=n("4840"),O=n("2cf4").set,E=n("b575"),C=n("cdf9"),A=n("44de"),$=n("f069"),k=n("e667"),M=n("69f3"),T=n("94ca"),j=n("b622"),P=n("2d00"),D=j("species"),I="Promise",L=M.get,N=M.set,R=M.getterFor(I),F=f,z=u.TypeError,U=u.document,H=u.process,B=l("fetch"),V=$.f,Y=V,q="process"==b(H),G=!!(U&&U.createEvent&&u.dispatchEvent),W="unhandledrejection",K="rejectionhandled",X=0,J=1,Z=2,Q=1,tt=2,et=T(I,(function(){var t=w(F)!==String(F);if(!t){if(66===P)return!0;if(!q&&"function"!=typeof PromiseRejectionEvent)return!0}if(c&&!F.prototype["finally"])return!0;if(P>=51&&/native code/.test(F))return!1;var e=F.resolve(1),n=function(t){t((function(){}),(function(){}))},r=e.constructor={};return r[D]=n,!(e.then((function(){}))instanceof n)})),nt=et||!x((function(t){F.all(t)["catch"]((function(){}))})),rt=function(t){var e;return!(!g(t)||"function"!=typeof(e=t.then))&&e},ot=function(t,e,n){if(!e.notified){e.notified=!0;var r=e.reactions;E((function(){var o=e.value,i=e.state==J,a=0;while(r.length>a){var s,c,u,l=r[a++],f=i?l.ok:l.fail,d=l.resolve,p=l.reject,h=l.domain;try{f?(i||(e.rejection===tt&&ct(t,e),e.rejection=Q),!0===f?s=o:(h&&h.enter(),s=f(o),h&&(h.exit(),u=!0)),s===l.promise?p(z("Promise-chain cycle")):(c=rt(s))?c.call(s,d,p):d(s)):p(o)}catch(v){h&&!u&&h.exit(),p(v)}}e.reactions=[],e.notified=!1,n&&!e.rejection&&at(t,e)}))}},it=function(t,e,n){var r,o;G?(r=U.createEvent("Event"),r.promise=e,r.reason=n,r.initEvent(t,!1,!0),u.dispatchEvent(r)):r={promise:e,reason:n},(o=u["on"+t])?o(r):t===W&&A("Unhandled promise rejection",n)},at=function(t,e){O.call(u,(function(){var n,r=e.value,o=st(e);if(o&&(n=k((function(){q?H.emit("unhandledRejection",r,t):it(W,t,r)})),e.rejection=q||st(e)?tt:Q,n.error))throw n.value}))},st=function(t){return t.rejection!==Q&&!t.parent},ct=function(t,e){O.call(u,(function(){q?H.emit("rejectionHandled",t):it(K,t,e.value)}))},ut=function(t,e,n,r){return function(o){t(e,n,o,r)}},lt=function(t,e,n,r){e.done||(e.done=!0,r&&(e=r),e.value=n,e.state=Z,ot(t,e,!0))},ft=function(t,e,n,r){if(!e.done){e.done=!0,r&&(e=r);try{if(t===n)throw z("Promise can't be resolved itself");var o=rt(n);o?E((function(){var r={done:!1};try{o.call(n,ut(ft,t,r,e),ut(lt,t,r,e))}catch(i){lt(t,r,i,e)}})):(e.value=n,e.state=J,ot(t,e,!1))}catch(i){lt(t,{done:!1},i,e)}}};et&&(F=function(t){y(this,F,I),m(t),r.call(this);var e=L(this);try{t(ut(ft,this,e),ut(lt,this,e))}catch(n){lt(this,e,n)}},r=function(t){N(this,{type:I,done:!1,notified:!1,parent:!1,reactions:[],rejection:!1,state:X,value:void 0})},r.prototype=p(F.prototype,{then:function(t,e){var n=R(this),r=V(S(this,F));return r.ok="function"!=typeof t||t,r.fail="function"==typeof e&&e,r.domain=q?H.domain:void 0,n.parent=!0,n.reactions.push(r),n.state!=X&&ot(this,n,!1),r.promise},catch:function(t){return this.then(void 0,t)}}),o=function(){var t=new r,e=L(t);this.promise=t,this.resolve=ut(ft,t,e),this.reject=ut(lt,t,e)},$.f=V=function(t){return t===F||t===i?new o(t):Y(t)},c||"function"!=typeof f||(a=f.prototype.then,d(f.prototype,"then",(function(t,e){var n=this;return new F((function(t,e){a.call(n,t,e)})).then(t,e)}),{unsafe:!0}),"function"==typeof B&&s({global:!0,enumerable:!0,forced:!0},{fetch:function(t){return C(F,B.apply(u,arguments))}}))),s({global:!0,wrap:!0,forced:et},{Promise:F}),h(F,I,!1,!0),v(I),i=l(I),s({target:I,stat:!0,forced:et},{reject:function(t){var e=V(this);return e.reject.call(void 0,t),e.promise}}),s({target:I,stat:!0,forced:c||et},{resolve:function(t){return C(c&&this===i?F:this,t)}}),s({target:I,stat:!0,forced:nt},{all:function(t){var e=this,n=V(e),r=n.resolve,o=n.reject,i=k((function(){var n=m(e.resolve),i=[],a=0,s=1;_(t,(function(t){var c=a++,u=!1;i.push(void 0),s++,n.call(e,t).then((function(t){u||(u=!0,i[c]=t,--s||r(i))}),o)})),--s||r(i)}));return i.error&&o(i.value),n.promise},race:function(t){var e=this,n=V(e),r=n.reject,o=k((function(){var o=m(e.resolve);_(t,(function(t){o.call(e,t).then(n.resolve,r)}))}));return o.error&&r(o.value),n.promise}})},e893:function(t,e,n){var r=n("5135"),o=n("56ef"),i=n("06cf"),a=n("9bf2");t.exports=function(t,e){for(var n=o(e),s=a.f,c=i.f,u=0;u=+t}))}},ec11:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n("78ef");e.default=function(t,e){return(0,r.withParams)({type:"between",min:t,max:e},(function(n){return!(0,r.req)(n)||(!/\s/.test(n)||n instanceof Date)&&+t<=+n&&+e>=+n}))}},f069:function(t,e,n){"use strict";var r=n("1c0b"),o=function(t){var e,n;this.promise=new t((function(t,r){if(void 0!==e||void 0!==n)throw TypeError("Bad Promise constructor");e=t,n=r})),this.resolve=r(e),this.reject=r(n)};t.exports.f=function(t){return new o(t)}},f2f3:function(t,e,n){"use strict";function r(t){return r="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r(t)}var o={namespaced:!0,state:{locale:null,fallback:null,translations:{}},mutations:{SET_LOCALE:function(t,e){t.locale=e.locale},ADD_LOCALE:function(t,e){var n=i(e.translations);if(t.translations.hasOwnProperty(e.locale)){var r=t.translations[e.locale];t.translations[e.locale]=Object.assign({},r,n)}else t.translations[e.locale]=n;try{t.translations.__ob__&&t.translations.__ob__.dep.notify()}catch(o){}},REPLACE_LOCALE:function(t,e){var n=i(e.translations);t.translations[e.locale]=n;try{t.translations.__ob__&&t.translations.__ob__.dep.notify()}catch(r){}},REMOVE_LOCALE:function(t,e){if(t.translations.hasOwnProperty(e.locale)){t.locale===e.locale&&(t.locale=null);var n=Object.assign({},t.translations);delete n[e.locale],t.translations=n}},SET_FALLBACK_LOCALE:function(t,e){t.fallback=e.locale}},actions:{setLocale:function(t,e){t.commit({type:"SET_LOCALE",locale:e.locale})},addLocale:function(t,e){t.commit({type:"ADD_LOCALE",locale:e.locale,translations:e.translations})},replaceLocale:function(t,e){t.commit({type:"REPLACE_LOCALE",locale:e.locale,translations:e.translations})},removeLocale:function(t,e){t.commit({type:"REMOVE_LOCALE",locale:e.locale,translations:e.translations})},setFallbackLocale:function(t,e){t.commit({type:"SET_FALLBACK_LOCALE",locale:e.locale})}}},i=function t(e){var n={};for(var o in e)if(e.hasOwnProperty(o)){var i=r(e[o]);if(a(e[o])){for(var s=e[o].length,c=0;c1?1:0;case"lv":return e%10===1&&e%100!==11?0:0!==e?1:2;case"lt":return e%10===1&&e%100!==11?0:e%10>=2&&(e%100<10||e%100>=20)?1:2;case"be":case"bs":case"hr":case"ru":case"sr":case"uk":return e%10===1&&e%100!==11?0:e%10>=2&&e%10<=4&&(e%100<10||e%100>=20)?1:2;case"mnk":return 0===e?0:1===e?1:2;case"ro":return 1===e?0:0===e||e%100>0&&e%100<20?1:2;case"pl":return 1===e?0:e%10>=2&&e%10<=4&&(e%100<10||e%100>=20)?1:2;case"cs":case"sk":return 1===e?0:e>=2&&e<=4?1:2;case"csb":return 1===e?0:e%10>=2&&e%10<=4&&(e%100<10||e%100>=20)?1:2;case"sl":return e%100===1?0:e%100===2?1:e%100===3||e%100===4?2:3;case"mt":return 1===e?0:0===e||e%100>1&&e%100<11?1:e%100>10&&e%100<20?2:3;case"gd":return 1===e||11===e?0:2===e||12===e?1:e>2&&e<20?2:3;case"cy":return 1===e?0:2===e?1:8!==e&&11!==e?2:3;case"kw":return 1===e?0:2===e?1:3===e?2:3;case"ga":return 1===e?0:2===e?1:e>2&&e<7?2:e>6&&e<11?3:4;case"ar":return 0===e?0:1===e?1:2===e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5;default:return 1!==e?1:0}}},c={install:function(t,e,n){"string"!==typeof arguments[2]&&"string"!==typeof arguments[3]||(console.warn("i18n: Registering the plugin vuex-i18n with a string for `moduleName` or `identifiers` is deprecated. Use a configuration object instead.","https://github.com/dkfbasel/vuex-i18n#setup"),n={moduleName:arguments[2],identifiers:arguments[3]}),n=Object.assign({warnings:!0,moduleName:"i18n",identifiers:["{","}"],preserveState:!1,translateFilterName:"translate",translateInFilterName:"translateIn",onTranslationNotFound:function(){}},n);var r=n.moduleName,i=n.identifiers,a=n.translateFilterName,s=n.translateInFilterName,c=n.onTranslationNotFound;if("function"!==typeof c&&(console.error("i18n: i18n config option onTranslationNotFound must be a function"),c=function(){}),e.registerModule(r,o,{preserveState:n.preserveState}),!1===e.state.hasOwnProperty(r))return console.error("i18n: i18n vuex module is not correctly initialized. Please check the module name:",r),t.prototype.$i18n=function(t){return t},t.prototype.$getLanguage=function(){return null},void(t.prototype.$setLanguage=function(){console.error("i18n: i18n vuex module is not correctly initialized")});var l=u(i,n.warnings),f=function(){var t=e.state[r].locale;return d.apply(void 0,[t].concat(Array.prototype.slice.call(arguments)))},d=function(t){var o=arguments,i="",a="",s={},u=null,f=o.length;if(f>=3&&"string"===typeof o[2]?(i=o[1],a=o[2],f>3&&(s=o[3]),f>4&&(u=o[4])):(i=o[1],a=i,f>2&&(s=o[2]),f>3&&(u=o[3])),!t)return n.warnings&&console.warn("i18n: i18n locale is not set when trying to access translations:",i),a;var d=e.state[r].translations,p=e.state[r].fallback,h=t.split("-"),v=!0;if(!1===d.hasOwnProperty(t)?v=!1:!1===d[t].hasOwnProperty(i)&&(v=!1),!0===v)return l(t,d[t][i],s,u);if(h.length>1&&!0===d.hasOwnProperty(h[0])&&!0===d[h[0]].hasOwnProperty(i))return l(h[0],d[h[0]][i],s,u);var g=c(t,i,a);return g&&Promise.resolve(g).then((function(e){var n={};n[i]=e,b(t,n)})),!1===d.hasOwnProperty(p)?l(t,a,s,u):!1===d[p].hasOwnProperty(i)?l(p,a,s,u):l(t,d[p][i],s,u)},p=function(t,e){for(var n=arguments.length,r=new Array(n>2?n-2:0),o=2;o1&&void 0!==arguments[1]?arguments[1]:"fallback",o=e.state[r].locale,i=e.state[r].fallback,a=e.state[r].translations;if(a.hasOwnProperty(o)&&a[o].hasOwnProperty(t))return!0;if("strict"==n)return!1;var s=o.split("-");return!!(s.length>1&&a.hasOwnProperty(s[0])&&a[s[0]].hasOwnProperty(t))||"locale"!=n&&!(!a.hasOwnProperty(i)||!a[i].hasOwnProperty(t))},v=function(t){e.dispatch({type:"".concat(r,"/setFallbackLocale"),locale:t})},g=function(t){e.dispatch({type:"".concat(r,"/setLocale"),locale:t})},m=function(){return e.state[r].locale},y=function(){return Object.keys(e.state[r].translations)},b=function(t,n){return e.dispatch({type:"".concat(r,"/addLocale"),locale:t,translations:n})},w=function(t,n){return e.dispatch({type:"".concat(r,"/replaceLocale"),locale:t,translations:n})},_=function(t){e.state[r].translations.hasOwnProperty(t)&&e.dispatch({type:"".concat(r,"/removeLocale"),locale:t})},x=function(t){return n.warnings&&console.warn("i18n: $i18n.exists is depreceated. Please use $i18n.localeExists instead. It provides exactly the same functionality."),S(t)},S=function(t){return e.state[r].translations.hasOwnProperty(t)};t.prototype.$i18n={locale:m,locales:y,set:g,add:b,replace:w,remove:_,fallback:v,localeExists:S,keyExists:h,translate:f,translateIn:d,exists:x},t.i18n={locale:m,locales:y,set:g,add:b,replace:w,remove:_,fallback:v,translate:f,translateIn:d,localeExists:S,keyExists:h,exists:x},t.prototype.$t=f,t.prototype.$tlang=d,t.filter(a,f),t.filter(s,p)}},u=function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];null!=t&&2==t.length||console.warn("i18n: You must specify the start and end character identifying variable substitutions");var n=new RegExp(t[0]+"{1}(\\w{1}|\\w.+?)"+t[1]+"{1}","g"),o=function(r,o){return r.replace?r.replace(n,(function(n){var i=n.replace(t[0],"").replace(t[1],"");return void 0!==o[i]?o[i]:(e&&(console.group?console.group("i18n: Not all placeholders found"):console.warn("i18n: Not all placeholders found"),console.warn("Text:",r),console.warn("Placeholder:",n),console.groupEnd&&console.groupEnd()),n)})):r},i=function(t,n){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,c=r(n),u=r(a),f=function(){return l(n)?n.map((function(t){return o(t,i,!1)})):"string"===c?o(n,i,!0):void 0};if(null===a)return f();if("number"!==u)return e&&console.warn("i18n: pluralization is not a number"),f();var d=f(),p=null;p=l(d)&&d.length>0?d:d.split(":::");var h=s.getTranslationIndex(t,a);return"undefined"===typeof p[h]?(e&&console.warn("i18n: pluralization not provided in locale",n,t,h),p[0].trim()):p[h].trim()};return i};function l(t){return!!t&&Array===t.constructor}var f={store:o,plugin:c};e["a"]=f},f5df:function(t,e,n){var r=n("00ee"),o=n("c6b6"),i=n("b622"),a=i("toStringTag"),s="Arguments"==o(function(){return arguments}()),c=function(t,e){try{return t[e]}catch(n){}};t.exports=r?o:function(t){var e,n,r;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=c(e=Object(t),a))?n:s?o(e):"Object"==(r=o(e))&&"function"==typeof e.callee?"Arguments":r}},f772:function(t,e,n){var r=n("5692"),o=n("90e3"),i=r("keys");t.exports=function(t){return i[t]||(i[t]=o(t))}},f906:function(t,e,n){!function(e,n){t.exports=n()}(0,(function(){"use strict";var t,e=/(\[[^[]*\])|([-:/.()\s]+)|(A|a|YYYY|YY?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,n=/\d\d/,r=/\d\d?/,o=/\d*[^\s\d-:/.()]+/,i=function(t){return function(e){this[t]=+e}},a=[/[+-]\d\d:?\d\d/,function(t){var e,n;(this.zone||(this.zone={})).offset=(e=t.match(/([+-]|\d\d)/g),0===(n=60*e[1]+ +e[2])?0:"+"===e[0]?-n:n)}],s={A:[/[AP]M/,function(t){this.afternoon="PM"===t}],a:[/[ap]m/,function(t){this.afternoon="pm"===t}],S:[/\d/,function(t){this.milliseconds=100*+t}],SS:[n,function(t){this.milliseconds=10*+t}],SSS:[/\d{3}/,function(t){this.milliseconds=+t}],s:[r,i("seconds")],ss:[r,i("seconds")],m:[r,i("minutes")],mm:[r,i("minutes")],H:[r,i("hours")],h:[r,i("hours")],HH:[r,i("hours")],hh:[r,i("hours")],D:[r,i("day")],DD:[n,i("day")],Do:[o,function(e){var n=t.ordinal,r=e.match(/\d+/);if(this.day=r[0],n)for(var o=1;o<=31;o+=1)n(o).replace(/\[|\]/g,"")===e&&(this.day=o)}],M:[r,i("month")],MM:[n,i("month")],MMM:[o,function(e){var n=t,r=n.months,o=n.monthsShort,i=o?o.findIndex((function(t){return t===e})):r.findIndex((function(t){return t.substr(0,3)===e}));if(i<0)throw new Error;this.month=i+1}],MMMM:[o,function(e){var n=t.months.indexOf(e);if(n<0)throw new Error;this.month=n+1}],Y:[/[+-]?\d+/,i("year")],YY:[n,function(t){t=+t,this.year=t+(t>68?1900:2e3)}],YYYY:[/\d{4}/,i("year")],Z:a,ZZ:a},c=function(t,n,r){try{var o=function(t){for(var n=t.match(e),r=n.length,o=0;o0?a-1:h.getMonth(),y=u||0,b=l||0,w=f||0,_=d||0;return r?new Date(Date.UTC(g,m,v,y,b,w,_)):new Date(g,m,v,y,b,w,_)}catch(t){return new Date("")}};return function(e,n,r){var o=n.prototype,i=o.parse;o.parse=function(e){var n=e.date,o=e.format,a=e.pl,s=e.utc;this.$u=s,o?(t=a?r.Ls[a]:this.$locale(),this.$d=c(n,o,s),this.init(e),a&&(this.$L=a)):i.call(this,e)}}}))},fb6a:function(t,e,n){"use strict";var r=n("23e7"),o=n("861d"),i=n("e8b5"),a=n("23cb"),s=n("50c4"),c=n("fc6a"),u=n("8418"),l=n("b622"),f=n("1dde"),d=n("ae40"),p=f("slice"),h=d("slice",{ACCESSORS:!0,0:0,1:2}),v=l("species"),g=[].slice,m=Math.max;r({target:"Array",proto:!0,forced:!p||!h},{slice:function(t,e){var n,r,l,f=c(this),d=s(f.length),p=a(t,d),h=a(void 0===e?d:e,d);if(i(f)&&(n=f.constructor,"function"!=typeof n||n!==Array&&!i(n.prototype)?o(n)&&(n=n[v],null===n&&(n=void 0)):n=void 0,n===Array||void 0===n))return g.call(f,p,h);for(r=new(void 0===n?Array:n)(m(h-p,0)),l=0;pu?l(e,s,v):s>v&&f(t,n,u)}function l(t,e,n){for(;e<=n;++e)a(t[e])}function f(t,e,n){for(;e<=n;++e){var r=t[e];o(r)&&(r.vm.$destroy(),r.vm=null)}}function d(t,e){t!==e&&(e.vm=t.vm,s(e))}function p(t,e){o(t)&&o(e)?t!==e&&u(t,e):o(e)?l(e,0,e.length-1):o(t)&&f(t,0,t.length-1)}function h(t,e,n){return{tag:t,key:e,args:n}}Object.defineProperty(e,"__esModule",{value:!0}),e.patchChildren=p,e.h=h},fc6a:function(t,e,n){var r=n("44ad"),o=n("1d80");t.exports=function(t){return r(o(t))}},fdbc:function(t,e){t.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},fdbf:function(t,e,n){var r=n("4930");t.exports=r&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},fea9:function(t,e,n){var r=n("da84");t.exports=r.Promise}}]); \ No newline at end of file +function r(t){return r="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r(t)}function o(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function i(){return i=Object.assign||function(t){for(var e=1;e=0||(o[n]=t[n]);return o}function c(t,e){if(null==t)return{};var n,r,o=s(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}function u(t){return l(t)||f(t)||p()}function l(t){if(Array.isArray(t)){for(var e=0,n=new Array(t.length);e"===e[0]&&(e=e.substring(1)),t)try{if(t.matches)return t.matches(e);if(t.msMatchesSelector)return t.msMatchesSelector(e);if(t.webkitMatchesSelector)return t.webkitMatchesSelector(e)}catch(n){return!1}return!1}}function k(t){return t.host&&t!==document&&t.host.nodeType?t.host:t.parentNode}function C(t,e,n,r){if(t){n=n||document;do{if(null!=e&&(">"===e[0]?t.parentNode===n&&_(t,e):_(t,e))||r&&t===n)return t;if(t===n)break}while(t=k(t))}return null}var M,E=/\s+/g;function A(t,e,n){if(t&&e)if(t.classList)t.classList[n?"add":"remove"](e);else{var r=(" "+t.className+" ").replace(E," ").replace(" "+e+" "," ");t.className=(r+(n?" "+e:"")).replace(E," ")}}function T(t,e,n){var r=t&&t.style;if(r){if(void 0===n)return document.defaultView&&document.defaultView.getComputedStyle?n=document.defaultView.getComputedStyle(t,""):t.currentStyle&&(n=t.currentStyle),void 0===e?n:n[e];e in r||-1!==e.indexOf("webkit")||(e="-webkit-"+e),r[e]=n+("string"===typeof n?"":"px")}}function $(t,e){var n="";if("string"===typeof t)n=t;else do{var r=T(t,"transform");r&&"none"!==r&&(n=r+" "+n)}while(!e&&(t=t.parentNode));var o=window.DOMMatrix||window.WebKitCSSMatrix||window.CSSMatrix||window.MSCSSMatrix;return o&&new o(n)}function D(t,e,n){if(t){var r=t.getElementsByTagName(e),o=0,i=r.length;if(n)for(;o=i:o<=i,!a)return r;if(r===N())break;r=B(r,!1)}return!1}function I(t,e,n){var r=0,o=0,i=t.children;while(o2&&void 0!==arguments[2]?arguments[2]:{},r=n.evt,o=c(n,["evt"]);nt.pluginEvent.bind(Zt)(t,e,a({dragEl:at,parentEl:st,ghostEl:ct,rootEl:ut,nextEl:lt,lastDownEl:ft,cloneEl:pt,cloneHidden:dt,dragStarted:Ct,putSortable:bt,activeSortable:Zt.active,originalEvent:r,oldIndex:ht,oldDraggableIndex:mt,newIndex:vt,newDraggableIndex:gt,hideGhostForTarget:Jt,unhideGhostForTarget:Yt,cloneNowHidden:function(){dt=!0},cloneNowShown:function(){dt=!1},dispatchSortableEvent:function(t){it({sortable:e,name:t,originalEvent:r})}},o))};function it(t){rt(a({putSortable:bt,cloneEl:pt,targetEl:at,rootEl:ut,oldIndex:ht,oldDraggableIndex:mt,newIndex:vt,newDraggableIndex:gt},t))}var at,st,ct,ut,lt,ft,pt,dt,ht,vt,mt,gt,yt,bt,wt,xt,St,Ot,_t,kt,Ct,Mt,Et,At,Tt,$t=!1,Dt=!1,Nt=[],Pt=!1,jt=!1,It=[],Rt=!1,Lt=[],zt="undefined"!==typeof document,Ft=b,Bt=m||v?"cssFloat":"float",Vt=zt&&!w&&!b&&"draggable"in document.createElement("div"),qt=function(){if(zt){if(v)return!1;var t=document.createElement("x");return t.style.cssText="pointer-events:auto","auto"===t.style.pointerEvents}}(),Ht=function(t,e){var n=T(t),r=parseInt(n.width)-parseInt(n.paddingLeft)-parseInt(n.paddingRight)-parseInt(n.borderLeftWidth)-parseInt(n.borderRightWidth),o=I(t,0,e),i=I(t,1,e),a=o&&T(o),s=i&&T(i),c=a&&parseInt(a.marginLeft)+parseInt(a.marginRight)+P(o).width,u=s&&parseInt(s.marginLeft)+parseInt(s.marginRight)+P(i).width;if("flex"===n.display)return"column"===n.flexDirection||"column-reverse"===n.flexDirection?"vertical":"horizontal";if("grid"===n.display)return n.gridTemplateColumns.split(" ").length<=1?"vertical":"horizontal";if(o&&a["float"]&&"none"!==a["float"]){var l="left"===a["float"]?"left":"right";return!i||"both"!==s.clear&&s.clear!==l?"horizontal":"vertical"}return o&&("block"===a.display||"flex"===a.display||"table"===a.display||"grid"===a.display||c>=r&&"none"===n[Bt]||i&&"none"===n[Bt]&&c+u>r)?"vertical":"horizontal"},Wt=function(t,e,n){var r=n?t.left:t.top,o=n?t.right:t.bottom,i=n?t.width:t.height,a=n?e.left:e.top,s=n?e.right:e.bottom,c=n?e.width:e.height;return r===a||o===s||r+i/2===a+c/2},Ut=function(t,e){var n;return Nt.some((function(r){if(!R(r)){var o=P(r),i=r[G].options.emptyInsertThreshold,a=t>=o.left-i&&t<=o.right+i,s=e>=o.top-i&&e<=o.bottom+i;return i&&a&&s?n=r:void 0}})),n},Kt=function(t){function e(t,n){return function(r,o,i,a){var s=r.options.group.name&&o.options.group.name&&r.options.group.name===o.options.group.name;if(null==t&&(n||s))return!0;if(null==t||!1===t)return!1;if(n&&"clone"===t)return t;if("function"===typeof t)return e(t(r,o,i,a),n)(r,o,i,a);var c=(n?r:o).options.group.name;return!0===t||"string"===typeof t&&t===c||t.join&&t.indexOf(c)>-1}}var n={},o=t.group;o&&"object"==r(o)||(o={name:o}),n.name=o.name,n.checkPull=e(o.pull,!0),n.checkPut=e(o.put),n.revertClone=o.revertClone,t.group=n},Jt=function(){!qt&&ct&&T(ct,"display","none")},Yt=function(){!qt&&ct&&T(ct,"display","")};zt&&document.addEventListener("click",(function(t){if(Dt)return t.preventDefault(),t.stopPropagation&&t.stopPropagation(),t.stopImmediatePropagation&&t.stopImmediatePropagation(),Dt=!1,!1}),!0);var Gt=function(t){if(at){t=t.touches?t.touches[0]:t;var e=Ut(t.clientX,t.clientY);if(e){var n={};for(var r in t)t.hasOwnProperty(r)&&(n[r]=t[r]);n.target=n.rootEl=e,n.preventDefault=void 0,n.stopPropagation=void 0,e[G]._onDragOver(n)}}},Xt=function(t){at&&at.parentNode[G]._isOutsideThisEl(t.target)};function Zt(t,e){if(!t||!t.nodeType||1!==t.nodeType)throw"Sortable: `el` must be an HTMLElement, not ".concat({}.toString.call(t));this.el=t,this.options=e=i({},e),t[G]=this;var n={group:null,sort:!0,disabled:!1,store:null,handle:null,draggable:/^[uo]l$/i.test(t.nodeName)?">li":">*",swapThreshold:1,invertSwap:!1,invertedSwapThreshold:null,removeCloneOnHide:!0,direction:function(){return Ht(t,this.options)},ghostClass:"sortable-ghost",chosenClass:"sortable-chosen",dragClass:"sortable-drag",ignore:"a, img",filter:null,preventOnFilter:!0,animation:0,easing:null,setData:function(t,e){t.setData("Text",e.textContent)},dropBubble:!1,dragoverBubble:!1,dataIdAttr:"data-id",delay:0,delayOnTouchOnly:!1,touchStartThreshold:(Number.parseInt?Number:window).parseInt(window.devicePixelRatio,10)||1,forceFallback:!1,fallbackClass:"sortable-fallback",fallbackOnBody:!1,fallbackTolerance:0,fallbackOffset:{x:0,y:0},supportPointer:!1!==Zt.supportPointer&&"PointerEvent"in window,emptyInsertThreshold:5};for(var r in nt.initializePlugins(this,t,n),n)!(r in e)&&(e[r]=n[r]);for(var o in Kt(e),this)"_"===o.charAt(0)&&"function"===typeof this[o]&&(this[o]=this[o].bind(this));this.nativeDraggable=!e.forceFallback&&Vt,this.nativeDraggable&&(this.options.touchStartThreshold=1),e.supportPointer?S(t,"pointerdown",this._onTapStart):(S(t,"mousedown",this._onTapStart),S(t,"touchstart",this._onTapStart)),this.nativeDraggable&&(S(t,"dragover",this),S(t,"dragenter",this)),Nt.push(this.el),e.store&&e.store.get&&this.sort(e.store.get(this)||[]),i(this,X())}function Qt(t){t.dataTransfer&&(t.dataTransfer.dropEffect="move"),t.cancelable&&t.preventDefault()}function te(t,e,n,r,o,i,a,s){var c,u,l=t[G],f=l.options.onMove;return!window.CustomEvent||v||m?(c=document.createEvent("Event"),c.initEvent("move",!0,!0)):c=new CustomEvent("move",{bubbles:!0,cancelable:!0}),c.to=e,c.from=t,c.dragged=n,c.draggedRect=r,c.related=o||e,c.relatedRect=i||P(e),c.willInsertAfter=s,c.originalEvent=a,t.dispatchEvent(c),f&&(u=f.call(l,c,a)),u}function ee(t){t.draggable=!1}function ne(){Rt=!1}function re(t,e,n){var r=P(R(n.el,n.options.draggable)),o=10;return e?t.clientX>r.right+o||t.clientX<=r.right&&t.clientY>r.bottom&&t.clientX>=r.left:t.clientX>r.right&&t.clientY>r.top||t.clientX<=r.right&&t.clientY>r.bottom+o}function oe(t,e,n,r,o,i,a,s){var c=r?t.clientY:t.clientX,u=r?n.height:n.width,l=r?n.top:n.left,f=r?n.bottom:n.right,p=!1;if(!a)if(s&&Atl+u*i/2:cf-At)return-Et}else if(c>l+u*(1-o)/2&&cf-u*i/2)?c>l+u/2?1:-1:0}function ie(t){return L(at)=Math.floor(this.options.touchStartThreshold/(this.nativeDraggable&&window.devicePixelRatio||1))&&this._disableDelayedDrag()},_disableDelayedDrag:function(){at&&ee(at),clearTimeout(this._dragStartTimer),this._disableDelayedDragEvents()},_disableDelayedDragEvents:function(){var t=this.el.ownerDocument;O(t,"mouseup",this._disableDelayedDrag),O(t,"touchend",this._disableDelayedDrag),O(t,"touchcancel",this._disableDelayedDrag),O(t,"mousemove",this._delayedDragTouchMoveHandler),O(t,"touchmove",this._delayedDragTouchMoveHandler),O(t,"pointermove",this._delayedDragTouchMoveHandler)},_triggerDragStart:function(t,e){e=e||"touch"==t.pointerType&&t,!this.nativeDraggable||e?this.options.supportPointer?S(document,"pointermove",this._onTouchMove):S(document,e?"touchmove":"mousemove",this._onTouchMove):(S(at,"dragend",this),S(ut,"dragstart",this._onDragStart));try{document.selection?ce((function(){document.selection.empty()})):window.getSelection().removeAllRanges()}catch(n){}},_dragStarted:function(t,e){if($t=!1,ut&&at){ot("dragStarted",this,{evt:e}),this.nativeDraggable&&S(document,"dragover",Xt);var n=this.options;!t&&A(at,n.dragClass,!1),A(at,n.ghostClass,!0),Zt.active=this,t&&this._appendGhost(),it({sortable:this,name:"start",originalEvent:e})}else this._nulling()},_emulateDragOver:function(){if(xt){this._lastX=xt.clientX,this._lastY=xt.clientY,Jt();var t=document.elementFromPoint(xt.clientX,xt.clientY),e=t;while(t&&t.shadowRoot){if(t=t.shadowRoot.elementFromPoint(xt.clientX,xt.clientY),t===e)break;e=t}if(at.parentNode[G]._isOutsideThisEl(t),e)do{if(e[G]){var n=void 0;if(n=e[G]._onDragOver({clientX:xt.clientX,clientY:xt.clientY,target:t,rootEl:e}),n&&!this.options.dragoverBubble)break}t=e}while(e=e.parentNode);Yt()}},_onTouchMove:function(t){if(wt){var e=this.options,n=e.fallbackTolerance,r=e.fallbackOffset,o=t.touches?t.touches[0]:t,i=ct&&$(ct,!0),a=ct&&i&&i.a,s=ct&&i&&i.d,c=Ft&&Tt&&z(Tt),u=(o.clientX-wt.clientX+r.x)/(a||1)+(c?c[0]-It[0]:0)/(a||1),l=(o.clientY-wt.clientY+r.y)/(s||1)+(c?c[1]-It[1]:0)/(s||1);if(!Zt.active&&!$t){if(n&&Math.max(Math.abs(o.clientX-this._lastX),Math.abs(o.clientY-this._lastY))=0&&(it({rootEl:st,name:"add",toEl:st,fromEl:ut,originalEvent:t}),it({sortable:this,name:"remove",toEl:st,originalEvent:t}),it({rootEl:st,name:"sort",toEl:st,fromEl:ut,originalEvent:t}),it({sortable:this,name:"sort",toEl:st,originalEvent:t})),bt&&bt.save()):vt!==ht&&vt>=0&&(it({sortable:this,name:"update",toEl:st,originalEvent:t}),it({sortable:this,name:"sort",toEl:st,originalEvent:t})),Zt.active&&(null!=vt&&-1!==vt||(vt=ht,gt=mt),it({sortable:this,name:"end",toEl:st,originalEvent:t}),this.save())))),this._nulling()},_nulling:function(){ot("nulling",this),ut=at=st=ct=lt=pt=ft=dt=wt=xt=Ct=vt=gt=ht=mt=Mt=Et=bt=yt=Zt.dragged=Zt.ghost=Zt.clone=Zt.active=null,Lt.forEach((function(t){t.checked=!0})),Lt.length=St=Ot=0},handleEvent:function(t){switch(t.type){case"drop":case"dragend":this._onDrop(t);break;case"dragenter":case"dragover":at&&(this._onDragOver(t),Qt(t));break;case"selectstart":t.preventDefault();break}},toArray:function(){for(var t,e=[],n=this.el.children,r=0,o=n.length,i=this.options;r1&&(Ne.forEach((function(t){r.addAnimationState({target:t,rect:Ie?P(t):o}),Y(t),t.fromRect=o,e.removeAnimationState(t)})),Ie=!1,ze(!this.options.removeCloneOnHide,n))},dragOverCompleted:function(t){var e=t.sortable,n=t.isOwner,r=t.insertion,o=t.activeSortable,i=t.parentEl,a=t.putSortable,s=this.options;if(r){if(n&&o._hideClone(),je=!1,s.animation&&Ne.length>1&&(Ie||!n&&!o.options.sort&&!a)){var c=P(Te,!1,!0,!0);Ne.forEach((function(t){t!==Te&&(J(t,c),i.appendChild(t))})),Ie=!0}if(!n)if(Ie||Be(),Ne.length>1){var u=De;o._showClone(e),o.options.animation&&!De&&u&&Pe.forEach((function(t){o.addAnimationState({target:t,rect:$e}),t.fromRect=$e,t.thisAnimationDuration=null}))}else o._showClone(e)}},dragOverAnimationCapture:function(t){var e=t.dragRect,n=t.isOwner,r=t.activeSortable;if(Ne.forEach((function(t){t.thisAnimationDuration=null})),r.options.animation&&!n&&r.multiDrag.isMultiDrag){$e=i({},e);var o=$(Te,!0);$e.top-=o.f,$e.left-=o.e}},dragOverAnimationComplete:function(){Ie&&(Ie=!1,Be())},drop:function(t){var e=t.originalEvent,n=t.rootEl,r=t.parentEl,o=t.sortable,i=t.dispatchSortableEvent,a=t.oldIndex,s=t.putSortable,c=s||this.sortable;if(e){var u=this.options,l=r.children;if(!Re)if(u.multiDragKey&&!this.multiDragKeyDown&&this._deselectMultiDrag(),A(Te,u.selectedClass,!~Ne.indexOf(Te)),~Ne.indexOf(Te))Ne.splice(Ne.indexOf(Te),1),Ee=null,rt({sortable:o,rootEl:n,name:"deselect",targetEl:Te,originalEvt:e});else{if(Ne.push(Te),rt({sortable:o,rootEl:n,name:"select",targetEl:Te,originalEvt:e}),e.shiftKey&&Ee&&o.el.contains(Ee)){var f,p,d=L(Ee),h=L(Te);if(~d&&~h&&d!==h)for(h>d?(p=d,f=h):(p=h,f=d+1);p1){var v=P(Te),m=L(Te,":not(."+this.options.selectedClass+")");if(!je&&u.animation&&(Te.thisAnimationDuration=null),c.captureAnimationState(),!je&&(u.animation&&(Te.fromRect=v,Ne.forEach((function(t){if(t.thisAnimationDuration=null,t!==Te){var e=Ie?P(t):v;t.fromRect=e,c.addAnimationState({target:t,rect:e})}}))),Be(),Ne.forEach((function(t){l[m]?r.insertBefore(t,l[m]):r.appendChild(t),m++})),a===L(Te))){var g=!1;Ne.forEach((function(t){t.sortableIndex===L(t)||(g=!0)})),g&&i("update")}Ne.forEach((function(t){Y(t)})),c.animateAll()}Ae=c}(n===r||s&&"clone"!==s.lastPutMode)&&Pe.forEach((function(t){t.parentNode&&t.parentNode.removeChild(t)}))}},nullingGlobal:function(){this.isMultiDrag=Re=!1,Pe.length=0},destroyGlobal:function(){this._deselectMultiDrag(),O(document,"pointerup",this._deselectMultiDrag),O(document,"mouseup",this._deselectMultiDrag),O(document,"touchend",this._deselectMultiDrag),O(document,"keydown",this._checkKeyDown),O(document,"keyup",this._checkKeyUp)},_deselectMultiDrag:function(t){if(("undefined"===typeof Re||!Re)&&Ae===this.sortable&&(!t||!C(t.target,this.options.draggable,this.sortable.el,!1))&&(!t||0===t.button))while(Ne.length){var e=Ne[0];A(e,this.options.selectedClass,!1),Ne.shift(),rt({sortable:this.sortable,rootEl:this.sortable.el,name:"deselect",targetEl:e,originalEvt:t})}},_checkKeyDown:function(t){t.key===this.options.multiDragKey&&(this.multiDragKeyDown=!0)},_checkKeyUp:function(t){t.key===this.options.multiDragKey&&(this.multiDragKeyDown=!1)}},i(t,{pluginName:"multiDrag",utils:{select:function(t){var e=t.parentNode[G];e&&e.options.multiDrag&&!~Ne.indexOf(t)&&(Ae&&Ae!==e&&(Ae.multiDrag._deselectMultiDrag(),Ae=e),A(t,e.options.selectedClass,!0),Ne.push(t))},deselect:function(t){var e=t.parentNode[G],n=Ne.indexOf(t);e&&e.options.multiDrag&&~n&&(A(t,e.options.selectedClass,!1),Ne.splice(n,1))}},eventProperties:function(){var t=this,e=[],n=[];return Ne.forEach((function(r){var o;e.push({multiDragElement:r,index:r.sortableIndex}),o=Ie&&r!==Te?-1:Ie?L(r,":not(."+t.options.selectedClass+")"):L(r),n.push({multiDragElement:r,index:o})})),{items:u(Ne),clones:[].concat(Pe),oldIndicies:e,newIndicies:n}},optionListeners:{multiDragKey:function(t){return t=t.toLowerCase(),"ctrl"===t?t="Control":t.length>1&&(t=t.charAt(0).toUpperCase()+t.substr(1)),t}}})}function ze(t,e){Ne.forEach((function(n,r){var o=e.children[n.sortableIndex+(t?Number(r):0)];o?e.insertBefore(n,o):e.appendChild(n)}))}function Fe(t,e){Pe.forEach((function(n,r){var o=e.children[n.sortableIndex+(t?Number(r):0)];o?e.insertBefore(n,o):e.appendChild(n)}))}function Be(){Ne.forEach((function(t){t!==Te&&t.parentNode&&t.parentNode.removeChild(t)}))}Zt.mount(new ye),Zt.mount(ke,_e),e["default"]=Zt},aa82:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var r=n("78ef"),o=function(t){return(0,r.withParams)({type:"requiredIf",prop:t},(function(e,n){return!(0,r.ref)(t,this,n)||(0,r.req)(e)}))};e.default=o},ac1f:function(t,e,n){"use strict";var r=n("23e7"),o=n("9263");r({target:"RegExp",proto:!0,forced:/./.exec!==o},{exec:o})},ad6d:function(t,e,n){"use strict";var r=n("825a");t.exports=function(){var t=r(this),e="";return t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.dotAll&&(e+="s"),t.unicode&&(e+="u"),t.sticky&&(e+="y"),e}},ae40:function(t,e,n){var r=n("83ab"),o=n("d039"),i=n("5135"),a=Object.defineProperty,s={},c=function(t){throw t};t.exports=function(t,e){if(i(s,t))return s[t];e||(e={});var n=[][t],u=!!i(e,"ACCESSORS")&&e.ACCESSORS,l=i(e,0)?e[0]:c,f=i(e,1)?e[1]:void 0;return s[t]=!!n&&!o((function(){if(u&&!r)return!0;var t={length:-1};u?a(t,1,{enumerable:!0,get:c}):t[1]=1,n.call(t,l,f)}))}},b5ae:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"alpha",{enumerable:!0,get:function(){return r.default}}),Object.defineProperty(e,"alphaNum",{enumerable:!0,get:function(){return o.default}}),Object.defineProperty(e,"numeric",{enumerable:!0,get:function(){return i.default}}),Object.defineProperty(e,"between",{enumerable:!0,get:function(){return a.default}}),Object.defineProperty(e,"email",{enumerable:!0,get:function(){return s.default}}),Object.defineProperty(e,"ipAddress",{enumerable:!0,get:function(){return c.default}}),Object.defineProperty(e,"macAddress",{enumerable:!0,get:function(){return u.default}}),Object.defineProperty(e,"maxLength",{enumerable:!0,get:function(){return l.default}}),Object.defineProperty(e,"minLength",{enumerable:!0,get:function(){return f.default}}),Object.defineProperty(e,"required",{enumerable:!0,get:function(){return p.default}}),Object.defineProperty(e,"requiredIf",{enumerable:!0,get:function(){return d.default}}),Object.defineProperty(e,"requiredUnless",{enumerable:!0,get:function(){return h.default}}),Object.defineProperty(e,"sameAs",{enumerable:!0,get:function(){return v.default}}),Object.defineProperty(e,"url",{enumerable:!0,get:function(){return m.default}}),Object.defineProperty(e,"or",{enumerable:!0,get:function(){return g.default}}),Object.defineProperty(e,"and",{enumerable:!0,get:function(){return y.default}}),Object.defineProperty(e,"not",{enumerable:!0,get:function(){return b.default}}),Object.defineProperty(e,"minValue",{enumerable:!0,get:function(){return w.default}}),Object.defineProperty(e,"maxValue",{enumerable:!0,get:function(){return x.default}}),Object.defineProperty(e,"integer",{enumerable:!0,get:function(){return S.default}}),Object.defineProperty(e,"decimal",{enumerable:!0,get:function(){return O.default}}),e.helpers=void 0;var r=C(n("6235")),o=C(n("3a54")),i=C(n("45b8")),a=C(n("ec11")),s=C(n("5d75")),c=C(n("c99d")),u=C(n("91d3")),l=C(n("2a12")),f=C(n("5db3")),p=C(n("d4f4")),d=C(n("aa82")),h=C(n("e652")),v=C(n("b6cb")),m=C(n("772d")),g=C(n("d294")),y=C(n("3360")),b=C(n("6417")),w=C(n("eb66")),x=C(n("46bc")),S=C(n("1331")),O=C(n("c301")),_=k(n("78ef"));function k(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)if(Object.prototype.hasOwnProperty.call(t,n)){var r=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(t,n):{};r.get||r.set?Object.defineProperty(e,n,r):e[n]=t[n]}return e.default=t,e}function C(t){return t&&t.__esModule?t:{default:t}}e.helpers=_},b622:function(t,e,n){var r=n("da84"),o=n("5692"),i=n("5135"),a=n("90e3"),s=n("4930"),c=n("fdbf2"),u=o("wks"),l=r.Symbol,f=c?l:l&&l.withoutSetter||a;t.exports=function(t){return i(u,t)||(s&&i(l,t)?u[t]=l[t]:u[t]=f("Symbol."+t)),u[t]}},b6cb:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var r=n("78ef"),o=function(t){return(0,r.withParams)({type:"sameAs",eq:t},(function(e,n){return e===(0,r.ref)(t,this,n)}))};e.default=o},b76a:function(t,e,n){(function(e,r){t.exports=r(n("aa47"))})("undefined"!==typeof self&&self,(function(t){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"===typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t["default"]}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s="fb15")}({"01f9":function(t,e,n){"use strict";var r=n("2d00"),o=n("5ca1"),i=n("2aba"),a=n("32e9"),s=n("84f2"),c=n("41a0"),u=n("7f20"),l=n("38fd"),f=n("2b4c")("iterator"),p=!([].keys&&"next"in[].keys()),d="@@iterator",h="keys",v="values",m=function(){return this};t.exports=function(t,e,n,g,y,b,w){c(n,e,g);var x,S,O,_=function(t){if(!p&&t in E)return E[t];switch(t){case h:return function(){return new n(this,t)};case v:return function(){return new n(this,t)}}return function(){return new n(this,t)}},k=e+" Iterator",C=y==v,M=!1,E=t.prototype,A=E[f]||E[d]||y&&E[y],T=A||_(y),$=y?C?_("entries"):T:void 0,D="Array"==e&&E.entries||A;if(D&&(O=l(D.call(new t)),O!==Object.prototype&&O.next&&(u(O,k,!0),r||"function"==typeof O[f]||a(O,f,m))),C&&A&&A.name!==v&&(M=!0,T=function(){return A.call(this)}),r&&!w||!p&&!M&&E[f]||a(E,f,T),s[e]=T,s[k]=m,y)if(x={values:C?T:_(v),keys:b?T:_(h),entries:$},w)for(S in x)S in E||i(E,S,x[S]);else o(o.P+o.F*(p||M),e,x);return x}},"02f4":function(t,e,n){var r=n("4588"),o=n("be13");t.exports=function(t){return function(e,n){var i,a,s=String(o(e)),c=r(n),u=s.length;return c<0||c>=u?t?"":void 0:(i=s.charCodeAt(c),i<55296||i>56319||c+1===u||(a=s.charCodeAt(c+1))<56320||a>57343?t?s.charAt(c):i:t?s.slice(c,c+2):a-56320+(i-55296<<10)+65536)}}},"0390":function(t,e,n){"use strict";var r=n("02f4")(!0);t.exports=function(t,e,n){return e+(n?r(t,e).length:1)}},"0bfb":function(t,e,n){"use strict";var r=n("cb7c");t.exports=function(){var t=r(this),e="";return t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.unicode&&(e+="u"),t.sticky&&(e+="y"),e}},"0d58":function(t,e,n){var r=n("ce10"),o=n("e11e");t.exports=Object.keys||function(t){return r(t,o)}},1495:function(t,e,n){var r=n("86cc"),o=n("cb7c"),i=n("0d58");t.exports=n("9e1e")?Object.defineProperties:function(t,e){o(t);var n,a=i(e),s=a.length,c=0;while(s>c)r.f(t,n=a[c++],e[n]);return t}},"214f":function(t,e,n){"use strict";n("b0c5");var r=n("2aba"),o=n("32e9"),i=n("79e5"),a=n("be13"),s=n("2b4c"),c=n("520a"),u=s("species"),l=!i((function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:"7"},t},"7"!=="".replace(t,"$")})),f=function(){var t=/(?:)/,e=t.exec;t.exec=function(){return e.apply(this,arguments)};var n="ab".split(t);return 2===n.length&&"a"===n[0]&&"b"===n[1]}();t.exports=function(t,e,n){var p=s(t),d=!i((function(){var e={};return e[p]=function(){return 7},7!=""[t](e)})),h=d?!i((function(){var e=!1,n=/a/;return n.exec=function(){return e=!0,null},"split"===t&&(n.constructor={},n.constructor[u]=function(){return n}),n[p](""),!e})):void 0;if(!d||!h||"replace"===t&&!l||"split"===t&&!f){var v=/./[p],m=n(a,p,""[t],(function(t,e,n,r,o){return e.exec===c?d&&!o?{done:!0,value:v.call(e,n,r)}:{done:!0,value:t.call(n,e,r)}:{done:!1}})),g=m[0],y=m[1];r(String.prototype,t,g),o(RegExp.prototype,p,2==e?function(t,e){return y.call(t,this,e)}:function(t){return y.call(t,this)})}}},"230e":function(t,e,n){var r=n("d3f4"),o=n("7726").document,i=r(o)&&r(o.createElement);t.exports=function(t){return i?o.createElement(t):{}}},"23c6":function(t,e,n){var r=n("2d95"),o=n("2b4c")("toStringTag"),i="Arguments"==r(function(){return arguments}()),a=function(t,e){try{return t[e]}catch(n){}};t.exports=function(t){var e,n,s;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=a(e=Object(t),o))?n:i?r(e):"Object"==(s=r(e))&&"function"==typeof e.callee?"Arguments":s}},2621:function(t,e){e.f=Object.getOwnPropertySymbols},"2aba":function(t,e,n){var r=n("7726"),o=n("32e9"),i=n("69a8"),a=n("ca5a")("src"),s=n("fa5b"),c="toString",u=(""+s).split(c);n("8378").inspectSource=function(t){return s.call(t)},(t.exports=function(t,e,n,s){var c="function"==typeof n;c&&(i(n,"name")||o(n,"name",e)),t[e]!==n&&(c&&(i(n,a)||o(n,a,t[e]?""+t[e]:u.join(String(e)))),t===r?t[e]=n:s?t[e]?t[e]=n:o(t,e,n):(delete t[e],o(t,e,n)))})(Function.prototype,c,(function(){return"function"==typeof this&&this[a]||s.call(this)}))},"2aeb":function(t,e,n){var r=n("cb7c"),o=n("1495"),i=n("e11e"),a=n("613b")("IE_PROTO"),s=function(){},c="prototype",u=function(){var t,e=n("230e")("iframe"),r=i.length,o="<",a=">";e.style.display="none",n("fab2").appendChild(e),e.src="javascript:",t=e.contentWindow.document,t.open(),t.write(o+"script"+a+"document.F=Object"+o+"/script"+a),t.close(),u=t.F;while(r--)delete u[c][i[r]];return u()};t.exports=Object.create||function(t,e){var n;return null!==t?(s[c]=r(t),n=new s,s[c]=null,n[a]=t):n=u(),void 0===e?n:o(n,e)}},"2b4c":function(t,e,n){var r=n("5537")("wks"),o=n("ca5a"),i=n("7726").Symbol,a="function"==typeof i,s=t.exports=function(t){return r[t]||(r[t]=a&&i[t]||(a?i:o)("Symbol."+t))};s.store=r},"2d00":function(t,e){t.exports=!1},"2d95":function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},"2fdb":function(t,e,n){"use strict";var r=n("5ca1"),o=n("d2c8"),i="includes";r(r.P+r.F*n("5147")(i),"String",{includes:function(t){return!!~o(this,t,i).indexOf(t,arguments.length>1?arguments[1]:void 0)}})},"32e9":function(t,e,n){var r=n("86cc"),o=n("4630");t.exports=n("9e1e")?function(t,e,n){return r.f(t,e,o(1,n))}:function(t,e,n){return t[e]=n,t}},"38fd":function(t,e,n){var r=n("69a8"),o=n("4bf8"),i=n("613b")("IE_PROTO"),a=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=o(t),r(t,i)?t[i]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?a:null}},"41a0":function(t,e,n){"use strict";var r=n("2aeb"),o=n("4630"),i=n("7f20"),a={};n("32e9")(a,n("2b4c")("iterator"),(function(){return this})),t.exports=function(t,e,n){t.prototype=r(a,{next:o(1,n)}),i(t,e+" Iterator")}},"456d":function(t,e,n){var r=n("4bf8"),o=n("0d58");n("5eda")("keys",(function(){return function(t){return o(r(t))}}))},4588:function(t,e){var n=Math.ceil,r=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?r:n)(t)}},4630:function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},"4bf8":function(t,e,n){var r=n("be13");t.exports=function(t){return Object(r(t))}},5147:function(t,e,n){var r=n("2b4c")("match");t.exports=function(t){var e=/./;try{"/./"[t](e)}catch(n){try{return e[r]=!1,!"/./"[t](e)}catch(o){}}return!0}},"520a":function(t,e,n){"use strict";var r=n("0bfb"),o=RegExp.prototype.exec,i=String.prototype.replace,a=o,s="lastIndex",c=function(){var t=/a/,e=/b*/g;return o.call(t,"a"),o.call(e,"a"),0!==t[s]||0!==e[s]}(),u=void 0!==/()??/.exec("")[1],l=c||u;l&&(a=function(t){var e,n,a,l,f=this;return u&&(n=new RegExp("^"+f.source+"$(?!\\s)",r.call(f))),c&&(e=f[s]),a=o.call(f,t),c&&a&&(f[s]=f.global?a.index+a[0].length:e),u&&a&&a.length>1&&i.call(a[0],n,(function(){for(l=1;l1?arguments[1]:void 0)}}),n("9c6c")("includes")},6821:function(t,e,n){var r=n("626a"),o=n("be13");t.exports=function(t){return r(o(t))}},"69a8":function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},"6a99":function(t,e,n){var r=n("d3f4");t.exports=function(t,e){if(!r(t))return t;var n,o;if(e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;if("function"==typeof(n=t.valueOf)&&!r(o=n.call(t)))return o;if(!e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;throw TypeError("Can't convert object to primitive value")}},7333:function(t,e,n){"use strict";var r=n("0d58"),o=n("2621"),i=n("52a7"),a=n("4bf8"),s=n("626a"),c=Object.assign;t.exports=!c||n("79e5")((function(){var t={},e={},n=Symbol(),r="abcdefghijklmnopqrst";return t[n]=7,r.split("").forEach((function(t){e[t]=t})),7!=c({},t)[n]||Object.keys(c({},e)).join("")!=r}))?function(t,e){var n=a(t),c=arguments.length,u=1,l=o.f,f=i.f;while(c>u){var p,d=s(arguments[u++]),h=l?r(d).concat(l(d)):r(d),v=h.length,m=0;while(v>m)f.call(d,p=h[m++])&&(n[p]=d[p])}return n}:c},7726:function(t,e){var n=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},"77f1":function(t,e,n){var r=n("4588"),o=Math.max,i=Math.min;t.exports=function(t,e){return t=r(t),t<0?o(t+e,0):i(t,e)}},"79e5":function(t,e){t.exports=function(t){try{return!!t()}catch(e){return!0}}},"7f20":function(t,e,n){var r=n("86cc").f,o=n("69a8"),i=n("2b4c")("toStringTag");t.exports=function(t,e,n){t&&!o(t=n?t:t.prototype,i)&&r(t,i,{configurable:!0,value:e})}},8378:function(t,e){var n=t.exports={version:"2.6.5"};"number"==typeof __e&&(__e=n)},"84f2":function(t,e){t.exports={}},"86cc":function(t,e,n){var r=n("cb7c"),o=n("c69a"),i=n("6a99"),a=Object.defineProperty;e.f=n("9e1e")?Object.defineProperty:function(t,e,n){if(r(t),e=i(e,!0),r(n),o)try{return a(t,e,n)}catch(s){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(t[e]=n.value),t}},"9b43":function(t,e,n){var r=n("d8e8");t.exports=function(t,e,n){if(r(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,r){return t.call(e,n,r)};case 3:return function(n,r,o){return t.call(e,n,r,o)}}return function(){return t.apply(e,arguments)}}},"9c6c":function(t,e,n){var r=n("2b4c")("unscopables"),o=Array.prototype;void 0==o[r]&&n("32e9")(o,r,{}),t.exports=function(t){o[r][t]=!0}},"9def":function(t,e,n){var r=n("4588"),o=Math.min;t.exports=function(t){return t>0?o(r(t),9007199254740991):0}},"9e1e":function(t,e,n){t.exports=!n("79e5")((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},a352:function(e,n){e.exports=t},a481:function(t,e,n){"use strict";var r=n("cb7c"),o=n("4bf8"),i=n("9def"),a=n("4588"),s=n("0390"),c=n("5f1b"),u=Math.max,l=Math.min,f=Math.floor,p=/\$([$&`']|\d\d?|<[^>]*>)/g,d=/\$([$&`']|\d\d?)/g,h=function(t){return void 0===t?t:String(t)};n("214f")("replace",2,(function(t,e,n,v){return[function(r,o){var i=t(this),a=void 0==r?void 0:r[e];return void 0!==a?a.call(r,i,o):n.call(String(i),r,o)},function(t,e){var o=v(n,t,this,e);if(o.done)return o.value;var f=r(t),p=String(this),d="function"===typeof e;d||(e=String(e));var g=f.global;if(g){var y=f.unicode;f.lastIndex=0}var b=[];while(1){var w=c(f,p);if(null===w)break;if(b.push(w),!g)break;var x=String(w[0]);""===x&&(f.lastIndex=s(p,i(f.lastIndex),y))}for(var S="",O=0,_=0;_=O&&(S+=p.slice(O,C)+$,O=C+k.length)}return S+p.slice(O)}];function m(t,e,r,i,a,s){var c=r+t.length,u=i.length,l=d;return void 0!==a&&(a=o(a),l=p),n.call(s,l,(function(n,o){var s;switch(o.charAt(0)){case"$":return"$";case"&":return t;case"`":return e.slice(0,r);case"'":return e.slice(c);case"<":s=a[o.slice(1,-1)];break;default:var l=+o;if(0===l)return n;if(l>u){var p=f(l/10);return 0===p?n:p<=u?void 0===i[p-1]?o.charAt(1):i[p-1]+o.charAt(1):n}s=i[l-1]}return void 0===s?"":s}))}}))},aae3:function(t,e,n){var r=n("d3f4"),o=n("2d95"),i=n("2b4c")("match");t.exports=function(t){var e;return r(t)&&(void 0!==(e=t[i])?!!e:"RegExp"==o(t))}},ac6a:function(t,e,n){for(var r=n("cadf"),o=n("0d58"),i=n("2aba"),a=n("7726"),s=n("32e9"),c=n("84f2"),u=n("2b4c"),l=u("iterator"),f=u("toStringTag"),p=c.Array,d={CSSRuleList:!0,CSSStyleDeclaration:!1,CSSValueList:!1,ClientRectList:!1,DOMRectList:!1,DOMStringList:!1,DOMTokenList:!0,DataTransferItemList:!1,FileList:!1,HTMLAllCollection:!1,HTMLCollection:!1,HTMLFormElement:!1,HTMLSelectElement:!1,MediaList:!0,MimeTypeArray:!1,NamedNodeMap:!1,NodeList:!0,PaintRequestList:!1,Plugin:!1,PluginArray:!1,SVGLengthList:!1,SVGNumberList:!1,SVGPathSegList:!1,SVGPointList:!1,SVGStringList:!1,SVGTransformList:!1,SourceBufferList:!1,StyleSheetList:!0,TextTrackCueList:!1,TextTrackList:!1,TouchList:!1},h=o(d),v=0;vl)if(s=c[l++],s!=s)return!0}else for(;u>l;l++)if((t||l in c)&&c[l]===n)return t||l||0;return!t&&-1}}},c649:function(t,e,n){"use strict";(function(t){n.d(e,"c",(function(){return u})),n.d(e,"a",(function(){return s})),n.d(e,"b",(function(){return o})),n.d(e,"d",(function(){return c}));n("a481");function r(){return"undefined"!==typeof window?window.console:t.console}var o=r();function i(t){var e=Object.create(null);return function(n){var r=e[n];return r||(e[n]=t(n))}}var a=/-(\w)/g,s=i((function(t){return t.replace(a,(function(t,e){return e?e.toUpperCase():""}))}));function c(t){null!==t.parentElement&&t.parentElement.removeChild(t)}function u(t,e,n){var r=0===n?t.children[0]:t.children[n-1].nextSibling;t.insertBefore(e,r)}}).call(this,n("c8ba"))},c69a:function(t,e,n){t.exports=!n("9e1e")&&!n("79e5")((function(){return 7!=Object.defineProperty(n("230e")("div"),"a",{get:function(){return 7}}).a}))},c8ba:function(t,e){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(r){"object"===typeof window&&(n=window)}t.exports=n},ca5a:function(t,e){var n=0,r=Math.random();t.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++n+r).toString(36))}},cadf:function(t,e,n){"use strict";var r=n("9c6c"),o=n("d53b"),i=n("84f2"),a=n("6821");t.exports=n("01f9")(Array,"Array",(function(t,e){this._t=a(t),this._i=0,this._k=e}),(function(){var t=this._t,e=this._k,n=this._i++;return!t||n>=t.length?(this._t=void 0,o(1)):o(0,"keys"==e?n:"values"==e?t[n]:[n,t[n]])}),"values"),i.Arguments=i.Array,r("keys"),r("values"),r("entries")},cb7c:function(t,e,n){var r=n("d3f4");t.exports=function(t){if(!r(t))throw TypeError(t+" is not an object!");return t}},ce10:function(t,e,n){var r=n("69a8"),o=n("6821"),i=n("c366")(!1),a=n("613b")("IE_PROTO");t.exports=function(t,e){var n,s=o(t),c=0,u=[];for(n in s)n!=a&&r(s,n)&&u.push(n);while(e.length>c)r(s,n=e[c++])&&(~i(u,n)||u.push(n));return u}},d2c8:function(t,e,n){var r=n("aae3"),o=n("be13");t.exports=function(t,e,n){if(r(e))throw TypeError("String#"+n+" doesn't accept regex!");return String(o(t))}},d3f4:function(t,e){t.exports=function(t){return"object"===typeof t?null!==t:"function"===typeof t}},d53b:function(t,e){t.exports=function(t,e){return{value:e,done:!!t}}},d8e8:function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},e11e:function(t,e){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},f559:function(t,e,n){"use strict";var r=n("5ca1"),o=n("9def"),i=n("d2c8"),a="startsWith",s=""[a];r(r.P+r.F*n("5147")(a),"String",{startsWith:function(t){var e=i(this,t,a),n=o(Math.min(arguments.length>1?arguments[1]:void 0,e.length)),r=String(t);return s?s.call(e,r,n):e.slice(n,n+r.length)===r}})},f6fd:function(t,e){(function(t){var e="currentScript",n=t.getElementsByTagName("script");e in t||Object.defineProperty(t,e,{get:function(){try{throw new Error}catch(r){var t,e=(/.*at [^\(]*\((.*):.+:.+\)$/gi.exec(r.stack)||[!1])[1];for(t in n)if(n[t].src==e||"interactive"==n[t].readyState)return n[t];return null}}})})(document)},f751:function(t,e,n){var r=n("5ca1");r(r.S+r.F,"Object",{assign:n("7333")})},fa5b:function(t,e,n){t.exports=n("5537")("native-function-to-string",Function.toString)},fab2:function(t,e,n){var r=n("7726").document;t.exports=r&&r.documentElement},fb15:function(t,e,n){"use strict";var r;(n.r(e),"undefined"!==typeof window)&&(n("f6fd"),(r=window.document.currentScript)&&(r=r.src.match(/(.+\/)[^/]+\.js(\?.*)?$/))&&(n.p=r[1]));n("f751"),n("f559"),n("ac6a"),n("cadf"),n("456d");function o(t){if(Array.isArray(t))return t}function i(t,e){if("undefined"!==typeof Symbol&&Symbol.iterator in Object(t)){var n=[],r=!0,o=!1,i=void 0;try{for(var a,s=t[Symbol.iterator]();!(r=(a=s.next()).done);r=!0)if(n.push(a.value),e&&n.length===e)break}catch(c){o=!0,i=c}finally{try{r||null==s["return"]||s["return"]()}finally{if(o)throw i}}return n}}function a(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=i?o.length:o.indexOf(t)}));return n?a.filter((function(t){return-1!==t})):a}function w(t,e){var n=this;this.$nextTick((function(){return n.$emit(t.toLowerCase(),e)}))}function x(t){var e=this;return function(n){null!==e.realList&&e["onDrag"+t](n),w.call(e,t,n)}}function S(t){return["transition-group","TransitionGroup"].includes(t)}function O(t){if(!t||1!==t.length)return!1;var e=u(t,1),n=e[0].componentOptions;return!!n&&S(n.tag)}function _(t,e,n){return t[n]||(e[n]?e[n]():void 0)}function k(t,e,n){var r=0,o=0,i=_(e,n,"header");i&&(r=i.length,t=t?[].concat(d(i),d(t)):d(i));var a=_(e,n,"footer");return a&&(o=a.length,t=t?[].concat(d(t),d(a)):d(a)),{children:t,headerOffset:r,footerOffset:o}}function C(t,e){var n=null,r=function(t,e){n=g(n,t,e)},o=Object.keys(t).filter((function(t){return"id"===t||t.startsWith("data-")})).reduce((function(e,n){return e[n]=t[n],e}),{});if(r("attrs",o),!e)return n;var i=e.on,a=e.props,s=e.attrs;return r("on",i),r("props",a),Object.assign(n.attrs,s),n}var M=["Start","Add","Remove","Update","End"],E=["Choose","Unchoose","Sort","Filter","Clone"],A=["Move"].concat(M,E).map((function(t){return"on"+t})),T=null,$={options:Object,list:{type:Array,required:!1,default:null},value:{type:Array,required:!1,default:null},noTransitionOnDrag:{type:Boolean,default:!1},clone:{type:Function,default:function(t){return t}},element:{type:String,default:"div"},tag:{type:String,default:null},move:{type:Function,default:null},componentData:{type:Object,required:!1,default:null}},D={name:"draggable",inheritAttrs:!1,props:$,data:function(){return{transitionMode:!1,noneFunctionalComponentMode:!1}},render:function(t){var e=this.$slots.default;this.transitionMode=O(e);var n=k(e,this.$slots,this.$scopedSlots),r=n.children,o=n.headerOffset,i=n.footerOffset;this.headerOffset=o,this.footerOffset=i;var a=C(this.$attrs,this.componentData);return t(this.getTag(),a,r)},created:function(){null!==this.list&&null!==this.value&&m["b"].error("Value and list props are mutually exclusive! Please set one or another."),"div"!==this.element&&m["b"].warn("Element props is deprecated please use tag props instead. See https://github.com/SortableJS/Vue.Draggable/blob/master/documentation/migrate.md#element-props"),void 0!==this.options&&m["b"].warn("Options props is deprecated, add sortable options directly as vue.draggable item, or use v-bind. See https://github.com/SortableJS/Vue.Draggable/blob/master/documentation/migrate.md#options-props")},mounted:function(){var t=this;if(this.noneFunctionalComponentMode=this.getTag().toLowerCase()!==this.$el.nodeName.toLowerCase()&&!this.getIsFunctional(),this.noneFunctionalComponentMode&&this.transitionMode)throw new Error("Transition-group inside component is not supported. Please alter tag value or remove transition-group. Current tag value: ".concat(this.getTag()));var e={};M.forEach((function(n){e["on"+n]=x.call(t,n)})),E.forEach((function(n){e["on"+n]=w.bind(t,n)}));var n=Object.keys(this.$attrs).reduce((function(e,n){return e[Object(m["a"])(n)]=t.$attrs[n],e}),{}),r=Object.assign({},this.options,n,e,{onMove:function(e,n){return t.onDragMove(e,n)}});!("draggable"in r)&&(r.draggable=">*"),this._sortable=new v.a(this.rootContainer,r),this.computeIndexes()},beforeDestroy:function(){void 0!==this._sortable&&this._sortable.destroy()},computed:{rootContainer:function(){return this.transitionMode?this.$el.children[0]:this.$el},realList:function(){return this.list?this.list:this.value}},watch:{options:{handler:function(t){this.updateOptions(t)},deep:!0},$attrs:{handler:function(t){this.updateOptions(t)},deep:!0},realList:function(){this.computeIndexes()}},methods:{getIsFunctional:function(){var t=this._vnode.fnOptions;return t&&t.functional},getTag:function(){return this.tag||this.element},updateOptions:function(t){for(var e in t){var n=Object(m["a"])(e);-1===A.indexOf(n)&&this._sortable.option(n,t[e])}},getChildrenNodes:function(){if(this.noneFunctionalComponentMode)return this.$children[0].$slots.default;var t=this.$slots.default;return this.transitionMode?t[0].child.$slots.default:t},computeIndexes:function(){var t=this;this.$nextTick((function(){t.visibleIndexes=b(t.getChildrenNodes(),t.rootContainer.children,t.transitionMode,t.footerOffset)}))},getUnderlyingVm:function(t){var e=y(this.getChildrenNodes()||[],t);if(-1===e)return null;var n=this.realList[e];return{index:e,element:n}},getUnderlyingPotencialDraggableComponent:function(t){var e=t.__vue__;return e&&e.$options&&S(e.$options._componentTag)?e.$parent:!("realList"in e)&&1===e.$children.length&&"realList"in e.$children[0]?e.$children[0]:e},emitChanges:function(t){var e=this;this.$nextTick((function(){e.$emit("change",t)}))},alterList:function(t){if(this.list)t(this.list);else{var e=d(this.value);t(e),this.$emit("input",e)}},spliceList:function(){var t=arguments,e=function(e){return e.splice.apply(e,d(t))};this.alterList(e)},updatePosition:function(t,e){var n=function(n){return n.splice(e,0,n.splice(t,1)[0])};this.alterList(n)},getRelatedContextFromMoveEvent:function(t){var e=t.to,n=t.related,r=this.getUnderlyingPotencialDraggableComponent(e);if(!r)return{component:r};var o=r.realList,i={list:o,component:r};if(e!==n&&o&&r.getUnderlyingVm){var a=r.getUnderlyingVm(n);if(a)return Object.assign(a,i)}return i},getVmIndex:function(t){var e=this.visibleIndexes,n=e.length;return t>n-1?n:e[t]},getComponent:function(){return this.$slots.default[0].componentInstance},resetTransitionData:function(t){if(this.noTransitionOnDrag&&this.transitionMode){var e=this.getChildrenNodes();e[t].data=null;var n=this.getComponent();n.children=[],n.kept=void 0}},onDragStart:function(t){this.context=this.getUnderlyingVm(t.item),t.item._underlying_vm_=this.clone(this.context.element),T=t.item},onDragAdd:function(t){var e=t.item._underlying_vm_;if(void 0!==e){Object(m["d"])(t.item);var n=this.getVmIndex(t.newIndex);this.spliceList(n,0,e),this.computeIndexes();var r={element:e,newIndex:n};this.emitChanges({added:r})}},onDragRemove:function(t){if(Object(m["c"])(this.rootContainer,t.item,t.oldIndex),"clone"!==t.pullMode){var e=this.context.index;this.spliceList(e,1);var n={element:this.context.element,oldIndex:e};this.resetTransitionData(e),this.emitChanges({removed:n})}else Object(m["d"])(t.clone)},onDragUpdate:function(t){Object(m["d"])(t.item),Object(m["c"])(t.from,t.item,t.oldIndex);var e=this.context.index,n=this.getVmIndex(t.newIndex);this.updatePosition(e,n);var r={element:this.context.element,oldIndex:e,newIndex:n};this.emitChanges({moved:r})},updateProperty:function(t,e){t.hasOwnProperty(e)&&(t[e]+=this.headerOffset)},computeFutureIndex:function(t,e){if(!t.element)return 0;var n=d(e.to.children).filter((function(t){return"none"!==t.style["display"]})),r=n.indexOf(e.related),o=t.component.getVmIndex(r),i=-1!==n.indexOf(T);return i||!e.willInsertAfter?o:o+1},onDragMove:function(t,e){var n=this.move;if(!n||!this.realList)return!0;var r=this.getRelatedContextFromMoveEvent(t),o=this.context,i=this.computeFutureIndex(r,t);Object.assign(o,{futureIndex:i});var a=Object.assign({},t,{relatedContext:r,draggedContext:o});return n(a,e)},onDragEnd:function(){this.computeIndexes(),T=null}}};"undefined"!==typeof window&&"Vue"in window&&window.Vue.component("draggable",D);var N=D;e["default"]=N}})["default"]}))},bf19:function(t,e,n){"use strict";var r=n("23e7");r({target:"URL",proto:!0,enumerable:!0},{toJSON:function(){return URL.prototype.toString.call(this)}})},c04e:function(t,e,n){var r=n("861d");t.exports=function(t,e){if(!r(t))return t;var n,o;if(e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;if("function"==typeof(n=t.valueOf)&&!r(o=n.call(t)))return o;if(!e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;throw TypeError("Can't convert object to primitive value")}},c301:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var r=n("78ef"),o=(0,r.regex)("decimal",/^[-]?\d*(\.\d+)?$/);e.default=o},c430:function(t,e){t.exports=!1},c6b6:function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},c6cd:function(t,e,n){var r=n("da84"),o=n("ce4e"),i="__core-js_shared__",a=r[i]||o(i,{});t.exports=a},c8ba:function(t,e){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(r){"object"===typeof window&&(n=window)}t.exports=n},c99d:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var r=n("78ef"),o=(0,r.withParams)({type:"ipAddress"},(function(t){if(!(0,r.req)(t))return!0;if("string"!==typeof t)return!1;var e=t.split(".");return 4===e.length&&e.every(i)}));e.default=o;var i=function(t){if(t.length>3||0===t.length)return!1;if("0"===t[0]&&"0"!==t)return!1;if(!t.match(/^\d+$/))return!1;var e=0|+t;return e>=0&&e<=255}},ca84:function(t,e,n){var r=n("5135"),o=n("fc6a"),i=n("4d64").indexOf,a=n("d012");t.exports=function(t,e){var n,s=o(t),c=0,u=[];for(n in s)!r(a,n)&&r(s,n)&&u.push(n);while(e.length>c)r(s,n=e[c++])&&(~i(u,n)||u.push(n));return u}},cb69:function(t,e,n){"use strict";(function(t){function n(t){return n="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}Object.defineProperty(e,"__esModule",{value:!0}),e.withParams=void 0;var r="undefined"!==typeof window?window:"undefined"!==typeof t?t:{},o=function(t,e){return"object"===n(t)&&void 0!==e?e:t((function(){}))},i=r.vuelidate?r.vuelidate.withParams:o;e.withParams=i}).call(this,n("c8ba"))},cc12:function(t,e,n){var r=n("da84"),o=n("861d"),i=r.document,a=o(i)&&o(i.createElement);t.exports=function(t){return a?i.createElement(t):{}}},ce4e:function(t,e,n){var r=n("da84"),o=n("9112");t.exports=function(t,e){try{o(r,t,e)}catch(n){r[t]=e}return e}},d012:function(t,e){t.exports={}},d039:function(t,e){t.exports=function(t){try{return!!t()}catch(e){return!0}}},d066:function(t,e,n){var r=n("428f"),o=n("da84"),i=function(t){return"function"==typeof t?t:void 0};t.exports=function(t,e){return arguments.length<2?i(r[t])||i(o[t]):r[t]&&r[t][e]||o[t]&&o[t][e]}},d1e7:function(t,e,n){"use strict";var r={}.propertyIsEnumerable,o=Object.getOwnPropertyDescriptor,i=o&&!r.call({1:2},1);e.f=i?function(t){var e=o(this,t);return!!e&&e.enumerable}:r},d294:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var r=n("78ef"),o=function(){for(var t=arguments.length,e=new Array(t),n=0;n0&&e.reduce((function(e,n){return e||n.apply(t,r)}),!1)}))};e.default=o},d4f4:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var r=n("78ef"),o=(0,r.withParams)({type:"required"},(function(t){return"string"===typeof t?(0,r.req)(t.trim()):(0,r.req)(t)}));e.default=o},d58f:function(t,e,n){var r=n("1c0b"),o=n("7b0b"),i=n("44ad"),a=n("50c4"),s=function(t){return function(e,n,s,c){r(n);var u=o(e),l=i(u),f=a(u.length),p=t?f-1:0,d=t?-1:1;if(s<2)while(1){if(p in l){c=l[p],p+=d;break}if(p+=d,t?p<0:f<=p)throw TypeError("Reduce of empty array with no initial value")}for(;t?p>=0:f>p;p+=d)p in l&&(c=n(c,l[p],p,u));return c}};t.exports={left:s(!1),right:s(!0)}},d784:function(t,e,n){"use strict";n("ac1f");var r=n("6eeb"),o=n("d039"),i=n("b622"),a=n("9263"),s=n("9112"),c=i("species"),u=!o((function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:"7"},t},"7"!=="".replace(t,"$")})),l=function(){return"$0"==="a".replace(/./,"$0")}(),f=i("replace"),p=function(){return!!/./[f]&&""===/./[f]("a","$0")}(),d=!o((function(){var t=/(?:)/,e=t.exec;t.exec=function(){return e.apply(this,arguments)};var n="ab".split(t);return 2!==n.length||"a"!==n[0]||"b"!==n[1]}));t.exports=function(t,e,n,f){var h=i(t),v=!o((function(){var e={};return e[h]=function(){return 7},7!=""[t](e)})),m=v&&!o((function(){var e=!1,n=/a/;return"split"===t&&(n={},n.constructor={},n.constructor[c]=function(){return n},n.flags="",n[h]=/./[h]),n.exec=function(){return e=!0,null},n[h](""),!e}));if(!v||!m||"replace"===t&&(!u||!l||p)||"split"===t&&!d){var g=/./[h],y=n(h,""[t],(function(t,e,n,r,o){return e.exec===a?v&&!o?{done:!0,value:g.call(e,n,r)}:{done:!0,value:t.call(n,e,r)}:{done:!1}}),{REPLACE_KEEPS_$0:l,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:p}),b=y[0],w=y[1];r(String.prototype,t,b),r(RegExp.prototype,h,2==e?function(t,e){return w.call(t,this,e)}:function(t){return w.call(t,this)})}f&&s(RegExp.prototype[h],"sham",!0)}},da84:function(t,e,n){(function(e){var n=function(t){return t&&t.Math==Math&&t};t.exports=n("object"==typeof globalThis&&globalThis)||n("object"==typeof window&&window)||n("object"==typeof self&&self)||n("object"==typeof e&&e)||function(){return this}()||Function("return this")()}).call(this,n("c8ba"))},e652:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var r=n("78ef"),o=function(t){return(0,r.withParams)({type:"requiredUnless",prop:t},(function(e,n){return!!(0,r.ref)(t,this,n)||(0,r.req)(e)}))};e.default=o},e893:function(t,e,n){var r=n("5135"),o=n("56ef"),i=n("06cf"),a=n("9bf2");t.exports=function(t,e){for(var n=o(e),s=a.f,c=i.f,u=0;u=+t}))};e.default=o},ec11:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var r=n("78ef"),o=function(t,e){return(0,r.withParams)({type:"between",min:t,max:e},(function(n){return!(0,r.req)(n)||(!/\s/.test(n)||n instanceof Date)&&+t<=+n&&+e>=+n}))};e.default=o},ee2b:function(t,e){var n="-_",r=36;while(r--)n+=r.toString(36);r=36;while(r---10)n+=r.toString(36).toUpperCase();t.exports=function(t){var e="";r=t||21;while(r--)e+=n[64*Math.random()|0];return e}},f2f3:function(t,e,n){"use strict";function r(t){return r="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r(t)}var o={namespaced:!0,state:{locale:null,fallback:null,translations:{}},mutations:{SET_LOCALE:function(t,e){t.locale=e.locale},ADD_LOCALE:function(t,e){var n=i(e.translations);if(t.translations.hasOwnProperty(e.locale)){var r=t.translations[e.locale];t.translations[e.locale]=Object.assign({},r,n)}else t.translations[e.locale]=n;try{t.translations.__ob__&&t.translations.__ob__.dep.notify()}catch(o){}},REPLACE_LOCALE:function(t,e){var n=i(e.translations);t.translations[e.locale]=n;try{t.translations.__ob__&&t.translations.__ob__.dep.notify()}catch(r){}},REMOVE_LOCALE:function(t,e){if(t.translations.hasOwnProperty(e.locale)){t.locale===e.locale&&(t.locale=null);var n=Object.assign({},t.translations);delete n[e.locale],t.translations=n}},SET_FALLBACK_LOCALE:function(t,e){t.fallback=e.locale}},actions:{setLocale:function(t,e){t.commit({type:"SET_LOCALE",locale:e.locale})},addLocale:function(t,e){t.commit({type:"ADD_LOCALE",locale:e.locale,translations:e.translations})},replaceLocale:function(t,e){t.commit({type:"REPLACE_LOCALE",locale:e.locale,translations:e.translations})},removeLocale:function(t,e){t.commit({type:"REMOVE_LOCALE",locale:e.locale,translations:e.translations})},setFallbackLocale:function(t,e){t.commit({type:"SET_FALLBACK_LOCALE",locale:e.locale})}}},i=function t(e){var n={};for(var o in e)if(e.hasOwnProperty(o)){var i=r(e[o]);if(a(e[o])){for(var s=e[o].length,c=0;c1?1:0;case"lv":return e%10===1&&e%100!==11?0:0!==e?1:2;case"lt":return e%10===1&&e%100!==11?0:e%10>=2&&(e%100<10||e%100>=20)?1:2;case"be":case"bs":case"hr":case"ru":case"sr":case"uk":return e%10===1&&e%100!==11?0:e%10>=2&&e%10<=4&&(e%100<10||e%100>=20)?1:2;case"mnk":return 0===e?0:1===e?1:2;case"ro":return 1===e?0:0===e||e%100>0&&e%100<20?1:2;case"pl":return 1===e?0:e%10>=2&&e%10<=4&&(e%100<10||e%100>=20)?1:2;case"cs":case"sk":return 1===e?0:e>=2&&e<=4?1:2;case"csb":return 1===e?0:e%10>=2&&e%10<=4&&(e%100<10||e%100>=20)?1:2;case"sl":return e%100===1?0:e%100===2?1:e%100===3||e%100===4?2:3;case"mt":return 1===e?0:0===e||e%100>1&&e%100<11?1:e%100>10&&e%100<20?2:3;case"gd":return 1===e||11===e?0:2===e||12===e?1:e>2&&e<20?2:3;case"cy":return 1===e?0:2===e?1:8!==e&&11!==e?2:3;case"kw":return 1===e?0:2===e?1:3===e?2:3;case"ga":return 1===e?0:2===e?1:e>2&&e<7?2:e>6&&e<11?3:4;case"ar":return 0===e?0:1===e?1:2===e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5;default:return 1!==e?1:0}}},c={install:function(t,e,n){"string"!==typeof arguments[2]&&"string"!==typeof arguments[3]||(console.warn("i18n: Registering the plugin vuex-i18n with a string for `moduleName` or `identifiers` is deprecated. Use a configuration object instead.","https://github.com/dkfbasel/vuex-i18n#setup"),n={moduleName:arguments[2],identifiers:arguments[3]}),n=Object.assign({warnings:!0,moduleName:"i18n",identifiers:["{","}"],preserveState:!1,translateFilterName:"translate",translateInFilterName:"translateIn",onTranslationNotFound:function(){}},n);var r=n.moduleName,i=n.identifiers,a=n.translateFilterName,s=n.translateInFilterName,c=n.onTranslationNotFound;if("function"!==typeof c&&(console.error("i18n: i18n config option onTranslationNotFound must be a function"),c=function(){}),e.registerModule(r,o,{preserveState:n.preserveState}),!1===e.state.hasOwnProperty(r))return console.error("i18n: i18n vuex module is not correctly initialized. Please check the module name:",r),t.prototype.$i18n=function(t){return t},t.prototype.$getLanguage=function(){return null},void(t.prototype.$setLanguage=function(){console.error("i18n: i18n vuex module is not correctly initialized")});var l=u(i,n.warnings),f=function(){var t=e.state[r].locale;return p.apply(void 0,[t].concat(Array.prototype.slice.call(arguments)))},p=function(t){var o=arguments,i="",a="",s={},u=null,f=o.length;if(f>=3&&"string"===typeof o[2]?(i=o[1],a=o[2],f>3&&(s=o[3]),f>4&&(u=o[4])):(i=o[1],a=i,f>2&&(s=o[2]),f>3&&(u=o[3])),!t)return n.warnings&&console.warn("i18n: i18n locale is not set when trying to access translations:",i),a;var p=e.state[r].translations,d=e.state[r].fallback,h=t.split("-"),v=!0;if((!1===p.hasOwnProperty(t)||!1===p[t].hasOwnProperty(i))&&(v=!1),!0===v)return l(t,p[t][i],s,u);if(h.length>1&&!0===p.hasOwnProperty(h[0])&&!0===p[h[0]].hasOwnProperty(i))return l(h[0],p[h[0]][i],s,u);var m=c(t,i,a);return m&&Promise.resolve(m).then((function(e){var n={};n[i]=e,b(t,n)})),!1===p.hasOwnProperty(d)?l(t,a,s,u):!1===p[d].hasOwnProperty(i)?l(d,a,s,u):l(t,p[d][i],s,u)},d=function(t,e){for(var n=arguments.length,r=new Array(n>2?n-2:0),o=2;o1&&void 0!==arguments[1]?arguments[1]:"fallback",o=e.state[r].locale,i=e.state[r].fallback,a=e.state[r].translations;if(a.hasOwnProperty(o)&&a[o].hasOwnProperty(t))return!0;if("strict"==n)return!1;var s=o.split("-");return!!(s.length>1&&a.hasOwnProperty(s[0])&&a[s[0]].hasOwnProperty(t))||"locale"!=n&&!(!a.hasOwnProperty(i)||!a[i].hasOwnProperty(t))},v=function(t){e.dispatch({type:"".concat(r,"/setFallbackLocale"),locale:t})},m=function(t){e.dispatch({type:"".concat(r,"/setLocale"),locale:t})},g=function(){return e.state[r].locale},y=function(){return Object.keys(e.state[r].translations)},b=function(t,n){return e.dispatch({type:"".concat(r,"/addLocale"),locale:t,translations:n})},w=function(t,n){return e.dispatch({type:"".concat(r,"/replaceLocale"),locale:t,translations:n})},x=function(t){e.state[r].translations.hasOwnProperty(t)&&e.dispatch({type:"".concat(r,"/removeLocale"),locale:t})},S=function(t){return n.warnings&&console.warn("i18n: $i18n.exists is depreceated. Please use $i18n.localeExists instead. It provides exactly the same functionality."),O(t)},O=function(t){return e.state[r].translations.hasOwnProperty(t)};t.prototype.$i18n={locale:g,locales:y,set:m,add:b,replace:w,remove:x,fallback:v,localeExists:O,keyExists:h,translate:f,translateIn:p,exists:S},t.i18n={locale:g,locales:y,set:m,add:b,replace:w,remove:x,fallback:v,translate:f,translateIn:p,localeExists:O,keyExists:h,exists:S},t.prototype.$t=f,t.prototype.$tlang=p,t.filter(a,f),t.filter(s,d)}},u=function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];null!=t&&2==t.length||console.warn("i18n: You must specify the start and end character identifying variable substitutions");var n=new RegExp(t[0]+"{1}(\\w{1}|\\w.+?)"+t[1]+"{1}","g"),o=function(r,o){return r.replace?r.replace(n,(function(n){var i=n.replace(t[0],"").replace(t[1],"");return void 0!==o[i]?o[i]:(e&&(console.group?console.group("i18n: Not all placeholders found"):console.warn("i18n: Not all placeholders found"),console.warn("Text:",r),console.warn("Placeholder:",n),console.groupEnd&&console.groupEnd()),n)})):r},i=function(t,n){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,c=r(n),u=r(a),f=function(){return l(n)?n.map((function(t){return o(t,i,!1)})):"string"===c?o(n,i,!0):void 0};if(null===a)return f();if("number"!==u)return e&&console.warn("i18n: pluralization is not a number"),f();var p=f(),d=null;d=l(p)&&p.length>0?p:p.split(":::");var h=s.getTranslationIndex(t,a);return"undefined"===typeof d[h]?(e&&console.warn("i18n: pluralization not provided in locale",n,t,h),d[0].trim()):d[h].trim()};return i};function l(t){return!!t&&Array===t.constructor}var f={store:o,plugin:c};e["a"]=f},f772:function(t,e,n){var r=n("5692"),o=n("90e3"),i=r("keys");t.exports=function(t){return i[t]||(i[t]=o(t))}},f906:function(t,e,n){!function(e,n){t.exports=n()}(0,(function(){"use strict";var t,e={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},n=function(t,n){return t.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(t,r,o){var i=o&&o.toUpperCase();return r||n[o]||e[o]||n[i].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,(function(t,e,n){return e||n.slice(1)}))}))},r=/(\[[^[]*\])|([-:/.()\s]+)|(A|a|YYYY|YY?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,o=/\d\d/,i=/\d\d?/,a=/\d*[^\s\d-:/()]+/,s=function(t){return function(e){this[t]=+e}},c=[/[+-]\d\d:?\d\d/,function(t){var e,n;(this.zone||(this.zone={})).offset=(e=t.match(/([+-]|\d\d)/g),0===(n=60*e[1]+ +e[2])?0:"+"===e[0]?-n:n)}],u=function(e){var n=t[e];return n&&(n.indexOf?n:n.s.concat(n.f))},l=function(e,n){var r,o=t.meridiem;if(o){for(var i=1;i<=24;i+=1)if(e.indexOf(o(i,0,n))>-1){r=i>12;break}}else r=e===(n?"pm":"PM");return r},f={A:[a,function(t){this.afternoon=l(t,!1)}],a:[a,function(t){this.afternoon=l(t,!0)}],S:[/\d/,function(t){this.milliseconds=100*+t}],SS:[o,function(t){this.milliseconds=10*+t}],SSS:[/\d{3}/,function(t){this.milliseconds=+t}],s:[i,s("seconds")],ss:[i,s("seconds")],m:[i,s("minutes")],mm:[i,s("minutes")],H:[i,s("hours")],h:[i,s("hours")],HH:[i,s("hours")],hh:[i,s("hours")],D:[i,s("day")],DD:[o,s("day")],Do:[a,function(e){var n=t.ordinal,r=e.match(/\d+/);if(this.day=r[0],n)for(var o=1;o<=31;o+=1)n(o).replace(/\[|\]/g,"")===e&&(this.day=o)}],M:[i,s("month")],MM:[o,s("month")],MMM:[a,function(t){var e=u("months"),n=(u("monthsShort")||e.map((function(t){return t.substr(0,3)}))).indexOf(t)+1;if(n<1)throw new Error;this.month=n%12||n}],MMMM:[a,function(t){var e=u("months").indexOf(t)+1;if(e<1)throw new Error;this.month=e%12||e}],Y:[/[+-]?\d+/,s("year")],YY:[o,function(t){t=+t,this.year=t+(t>68?1900:2e3)}],YYYY:[/\d{4}/,s("year")],Z:c,ZZ:c},p=function(e,o,i){try{var a=function(e){for(var o=(e=n(e,t&&t.formats)).match(r),i=o.length,a=0;a0?c-1:m.getMonth());var w=l||0,x=p||0,S=d||0,O=h||0;return v?new Date(Date.UTC(y,b,g,w,x,S,O+60*v.offset*1e3)):i?new Date(Date.UTC(y,b,g,w,x,S,O)):new Date(y,b,g,w,x,S,O)}catch(t){return new Date("")}};return function(e,n,r){r.p.customParseFormat=!0;var o=n.prototype,i=o.parse;o.parse=function(e){var n=e.date,o=e.utc,a=e.args;this.$u=o;var s=a[1];if("string"==typeof s){var c=!0===a[2],u=!0===a[3],l=c||u,f=a[2];u&&(f=a[2]),c||(t=f?r.Ls[f]:this.$locale()),this.$d=p(n,s,o),this.init(),f&&!0!==f&&(this.$L=this.locale(f).$L),l&&n!==this.format(s)&&(this.$d=new Date("")),t=void 0}else if(s instanceof Array)for(var d=s.length,h=1;h<=d;h+=1){a[1]=s[h-1];var v=r.apply(this,a);if(v.isValid()){this.$d=v.$d,this.$L=v.$L,this.init();break}h===d&&(this.$d=new Date(""))}else i.call(this,e)}}}))},f95e:function(t,e,n){"use strict";n.d(e,"a",(function(){return i})),n.d(e,"b",(function(){return c})),n.d(e,"c",(function(){return p})),n.d(e,"d",(function(){return l})),n.d(e,"e",(function(){return f}));var r=n("5313"),o=n("0ac0"),i=function(t,e){this.match=t,this.handler="string"==typeof e?a(e):e};function a(t){return function(e,n,r,o){var i=t;if(n[1]){var a=n[0].lastIndexOf(n[1]);i+=n[0].slice(a+n[1].length),r+=a;var s=r-o;s>0&&(i=n[0].slice(a-s,a)+i,r=o)}return e.tr.insertText(i,r,o)}}var s=500;function c(t){var e=t.rules,n=new r["d"]({state:{init:function(){return null},apply:function(t,e){var n=t.getMeta(this);return n||(t.selectionSet||t.docChanged?null:e)}},props:{handleTextInput:function(t,r,o,i){return u(t,r,o,i,e,n)},handleDOMEvents:{compositionend:function(t){setTimeout((function(){var r=t.state.selection,o=r.$cursor;o&&u(t,o.pos,o.pos,"",e,n)}))}}},isInputRules:!0});return n}function u(t,e,n,r,o,i){if(t.composing)return!1;var a=t.state,c=a.doc.resolve(e);if(c.parent.type.spec.code)return!1;for(var u=c.parent.textBetween(Math.max(0,c.parentOffset-s),c.parentOffset,null,"")+r,l=0;l=0;c--)a.step(s.steps[c].invert(s.docs[c]));if(i.text){var u=a.doc.resolve(i.from).marks();a.replaceWith(i.from,i.to,t.schema.text(i.text,u))}else a.delete(i.from,i.to);e(a)}return!0}}return!1}new i(/--$/,"—"),new i(/\.\.\.$/,"…"),new i(/(?:^|[\s\{\[\(\<'"\u2018\u201C])(")$/,"“"),new i(/"$/,"”"),new i(/(?:^|[\s\{\[\(\<'"\u2018\u201C])(')$/,"‘"),new i(/'$/,"’");function f(t,e,n,r){return new i(t,(function(t,i,a,s){var c=n instanceof Function?n(i):n,u=t.tr.delete(a,s),l=u.doc.resolve(a),f=l.blockRange(),p=f&&Object(o["h"])(f,e,c);if(!p)return null;u.wrap(f,p);var d=u.doc.resolve(a-1).nodeBefore;return d&&d.type==e&&Object(o["e"])(u.doc,a-1)&&(!r||r(i,d))&&u.join(a-1),u}))}function p(t,e,n){return new i(t,(function(t,r,o,i){var a=t.doc.resolve(o),s=n instanceof Function?n(r):n;return a.node(-1).canReplaceWith(a.index(-1),a.indexAfter(-1),e)?t.tr.delete(o,i).setBlockType(o,o,e,s):null}))}},fbf4:function(t,e,n){"use strict";function r(t){return null===t||void 0===t}function o(t){return null!==t&&void 0!==t}function i(t,e){return e.tag===t.tag&&e.key===t.key}function a(t){var e=t.tag;t.vm=new e({data:t.args})}function s(t){for(var e=Object.keys(t.args),n=0;nv?l(e,h,y):h>y&&f(t,d,v)}function l(t,e,n){for(;e<=n;++e)a(t[e])}function f(t,e,n){for(;e<=n;++e){var r=t[e];o(r)&&(r.vm.$destroy(),r.vm=null)}}function p(t,e){t!==e&&(e.vm=t.vm,s(e))}function d(t,e){o(t)&&o(e)?t!==e&&u(t,e):o(e)?l(e,0,e.length-1):o(t)&&f(t,0,t.length-1)}function h(t,e,n){return{tag:t,key:e,args:n}}Object.defineProperty(e,"__esModule",{value:!0}),e.patchChildren=d,e.h=h},fc6a:function(t,e,n){var r=n("44ad"),o=n("1d80");t.exports=function(t){return r(o(t))}},fdbf2:function(t,e,n){var r=n("4930");t.exports=r&&!Symbol.sham&&"symbol"==typeof Symbol.iterator}}]); \ No newline at end of file diff --git a/kirby/src/Api/Collection.php b/kirby/src/Api/Collection.php index ba5cb4a..6d87025 100755 --- a/kirby/src/Api/Collection.php +++ b/kirby/src/Api/Collection.php @@ -52,7 +52,7 @@ class Collection * @param array $schema * @throws \Exception */ - public function __construct(Api $api, $data = null, array $schema) + public function __construct(Api $api, $data, array $schema) { $this->api = $api; $this->data = $data; diff --git a/kirby/src/Api/Model.php b/kirby/src/Api/Model.php index 23012bb..fc5ed2f 100755 --- a/kirby/src/Api/Model.php +++ b/kirby/src/Api/Model.php @@ -50,11 +50,11 @@ class Model * Model constructor * * @param \Kirby\Api\Api $api - * @param null $data + * @param mixed $data * @param array $schema * @throws \Exception */ - public function __construct(Api $api, $data = null, array $schema) + public function __construct(Api $api, $data, array $schema) { $this->api = $api; $this->data = $data; diff --git a/kirby/src/Cms/Api.php b/kirby/src/Cms/Api.php index 314680f..e0b5f48 100755 --- a/kirby/src/Cms/Api.php +++ b/kirby/src/Cms/Api.php @@ -56,28 +56,7 @@ class Api extends BaseApi */ public function fieldApi($model, string $name, string $path = null) { - $form = Form::for($model); - $fieldNames = Str::split($name, '+'); - $index = 0; - $count = count($fieldNames); - $field = null; - - foreach ($fieldNames as $fieldName) { - $index++; - - if ($field = $form->fields()->get($fieldName)) { - if ($count !== $index) { - $form = $field->form(); - } - } else { - throw new NotFoundException('The field "' . $fieldName . '" could not be found'); - } - } - - // it can get this error only if $name is an empty string as $name = '' - if ($field === null) { - throw new NotFoundException('No field could be loaded'); - } + $field = Form::for($model)->field($name); $fieldApi = $this->clone([ 'routes' => $field->api(), diff --git a/kirby/src/Cms/App.php b/kirby/src/Cms/App.php index c3450fa..fa1bb8c 100755 --- a/kirby/src/Cms/App.php +++ b/kirby/src/Cms/App.php @@ -79,8 +79,9 @@ class App * Creates a new App instance * * @param array $props + * @param bool $setInstance If false, the instance won't be set globally */ - public function __construct(array $props = []) + public function __construct(array $props = [], bool $setInstance = true) { // register all roots to be able to load stuff afterwards $this->bakeRoots($props['roots'] ?? []); @@ -110,7 +111,9 @@ class App ]); // set the singleton - Model::$kirby = static::$instance = $this; + if (static::$instance === null || $setInstance === true) { + Model::$kirby = static::$instance = $this; + } // setup the I18n class with the translation loader $this->i18n(); @@ -333,6 +336,24 @@ class App return $router->call($path ?? $this->path(), $method ?? $this->request()->method()); } + /** + * Creates an instance with the same + * initial properties + * + * @param array $props + * @param bool $setInstance If false, the instance won't be set globally + * @return self + */ + public function clone(array $props = [], bool $setInstance = true) + { + $props = array_replace_recursive($this->propertyData, $props); + + $clone = new static($props, $setInstance); + $clone->data = $this->data; + + return $clone; + } + /** * Returns a specific user-defined collection * by name. All relevant dependencies are diff --git a/kirby/src/Cms/AppPlugins.php b/kirby/src/Cms/AppPlugins.php index 37c3628..03fca7c 100755 --- a/kirby/src/Cms/AppPlugins.php +++ b/kirby/src/Cms/AppPlugins.php @@ -48,6 +48,7 @@ trait AppPlugins // other plugin types 'api' => [], + 'authChallenges' => [], 'blueprints' => [], 'cacheTypes' => [], 'collections' => [], @@ -125,6 +126,17 @@ trait AppPlugins } } + /** + * Registers additional authentication challenges + * + * @param array $challenges + * @return array + */ + protected function extendAuthChallenges(array $challenges): array + { + return $this->extensions['authChallenges'] = Auth::$challenges = array_merge(Auth::$challenges, $challenges); + } + /** * Registers additional blueprints * @@ -618,6 +630,7 @@ trait AppPlugins // load static extensions only once if (static::$systemExtensions === null) { // Form Field Mixins + FormField::$mixins['datetime'] = include $root . '/config/fields/mixins/datetime.php'; FormField::$mixins['filepicker'] = include $root . '/config/fields/mixins/filepicker.php'; FormField::$mixins['min'] = include $root . '/config/fields/mixins/min.php'; FormField::$mixins['options'] = include $root . '/config/fields/mixins/options.php'; @@ -675,10 +688,17 @@ trait AppPlugins 'blueprints' => include $root . '/config/blueprints.php', 'fields' => include $root . '/config/fields.php', 'fieldMethods' => include $root . '/config/methods.php', - 'tags' => include $root . '/config/tags.php' + 'snippets' => include $root . '/config/snippets.php', + 'tags' => include $root . '/config/tags.php', + 'templates' => include $root . '/config/templates.php' ]; } + // default auth challenges + $this->extendAuthChallenges([ + 'email' => 'Kirby\Cms\Auth\EmailChallenge' + ]); + // default cache types $this->extendCacheTypes([ 'apcu' => 'Kirby\Cache\ApcuCache', @@ -691,7 +711,9 @@ trait AppPlugins $this->extendBlueprints(static::$systemExtensions['blueprints']); $this->extendFields(static::$systemExtensions['fields']); $this->extendFieldMethods((static::$systemExtensions['fieldMethods'])($this)); + $this->extendSnippets(static::$systemExtensions['snippets']); $this->extendTags(static::$systemExtensions['tags']); + $this->extendTemplates(static::$systemExtensions['templates']); } /** diff --git a/kirby/src/Cms/AppTranslations.php b/kirby/src/Cms/AppTranslations.php index 8141b54..0f5dcca 100755 --- a/kirby/src/Cms/AppTranslations.php +++ b/kirby/src/Cms/AppTranslations.php @@ -2,10 +2,9 @@ namespace Kirby\Cms; -use Exception; use Kirby\Data\Data; -use Kirby\Toolkit\F; use Kirby\Toolkit\I18n; +use Kirby\Toolkit\Locale; use Kirby\Toolkit\Str; /** @@ -36,11 +35,11 @@ trait AppTranslations } // inject translations from the current language - if ($this->multilang() === true && $language = $this->languages()->find($locale)) { + if ( + $this->multilang() === true && + $language = $this->languages()->find($locale) + ) { $data = array_merge($data, $language->translations()); - - // Add language slug rules to Str class - Str::$language = $language->rules(); } @@ -65,25 +64,12 @@ trait AppTranslations I18n::$translations = []; - // checks custom language definition for slugs - if ($slugsOption = $this->option('slugs')) { - // checks setting in two different ways + // add slug rules based on config option + if ($slugs = $this->option('slugs')) { + // two ways that the option can be defined: // "slugs" => "de" or "slugs" => ["language" => "de"] - $slugsLanguage = is_string($slugsOption) === true ? $slugsOption : ($slugsOption['language'] ?? null); - - // load custom slugs language if it's defined - if ($slugsLanguage !== null) { - $file = $this->root('i18n:rules') . '/' . $slugsLanguage . '.json'; - - if (F::exists($file) === true) { - try { - $data = Data::read($file); - } catch (Exception $e) { - $data = []; - } - - Str::$language = $data; - } + if ($slugs = $slugs['language'] ?? $slugs ?? null) { + Str::$language = Language::loadRules($slugs); } } } @@ -99,7 +85,7 @@ trait AppTranslations public function setCurrentLanguage(string $languageCode = null) { if ($this->multilang() === false) { - $this->setLocale($this->option('locale', 'en_US.utf-8')); + Locale::set($this->option('locale', 'en_US.utf-8')); return $this->language = null; } @@ -110,9 +96,12 @@ trait AppTranslations } if ($this->language) { - $this->setLocale($this->language->locale()); + Locale::set($this->language->locale()); } + // add language slug rules to Str class + Str::$language = $this->language->rules(); + return $this->language; } @@ -131,18 +120,13 @@ trait AppTranslations /** * Set locale settings * - * @internal + * @deprecated 3.5.0 Use \Kirby\Toolkit\Locale::set() instead + * * @param string|array $locale */ public function setLocale($locale): void { - if (is_array($locale) === true) { - foreach ($locale as $key => $value) { - setlocale($key, $value); - } - } else { - setlocale(LC_ALL, $locale); - } + Locale::set($locale); } /** diff --git a/kirby/src/Cms/AppUsers.php b/kirby/src/Cms/AppUsers.php index f5d235d..0d9fae1 100755 --- a/kirby/src/Cms/AppUsers.php +++ b/kirby/src/Cms/AppUsers.php @@ -35,9 +35,12 @@ trait AppUsers } /** - * Become any existing user + * Become any existing user or disable the current user * - * @param string|null $who User ID or email address + * @param string|null $who User ID or email address, + * `null` to use the actual user again, + * `'kirby'` for a virtual admin user or + * `'nobody'` to disable the actual user * @param Closure|null $callback Optional action function that will be run with * the permissions of the impersonated user; the * impersonation will be reset afterwards diff --git a/kirby/src/Cms/Auth.php b/kirby/src/Cms/Auth.php index a4c67f6..718ce55 100755 --- a/kirby/src/Cms/Auth.php +++ b/kirby/src/Cms/Auth.php @@ -4,10 +4,12 @@ namespace Kirby\Cms; use Kirby\Data\Data; use Kirby\Exception\InvalidArgumentException; +use Kirby\Exception\LogicException; use Kirby\Exception\NotFoundException; use Kirby\Exception\PermissionException; use Kirby\Http\Idn; use Kirby\Http\Request\Auth\BasicAuth; +use Kirby\Toolkit\A; use Kirby\Toolkit\F; use Throwable; @@ -22,6 +24,14 @@ use Throwable; */ class Auth { + /** + * Available auth challenge classes + * from the core and plugins + * + * @var array + */ + public static $challenges = []; + protected $impersonate; protected $kirby; protected $user = false; @@ -36,6 +46,105 @@ class Auth $this->kirby = $kirby; } + /** + * Creates an authentication challenge + * (one-time auth code) + * + * @param string $email + * @param bool $long If `true`, a long session will be created + * @param string $mode Either 'login' or 'password-reset' + * @return string|null Name of the challenge that was created; + * `null` if the user does not exist or no + * challenge was available for the user + * + * @throws \Kirby\Exception\LogicException If there is no suitable authentication challenge (only in debug mode) + * @throws \Kirby\Exception\NotFoundException If the user does not exist (only in debug mode) + * @throws \Kirby\Exception\PermissionException If the rate limit is exceeded + */ + public function createChallenge(string $email, bool $long = false, string $mode = 'login'): ?string + { + // ensure that email addresses with IDN domains are in Unicode format + $email = Idn::decodeEmail($email); + + if ($this->isBlocked($email) === true) { + $this->kirby->trigger('user.login:failed', compact('email')); + + if ($this->kirby->option('debug') === true) { + $message = 'Rate limit exceeded'; + } else { + // avoid leaking security-relevant information + $message = ['key' => 'access.login']; + } + + throw new PermissionException($message); + } + + // rate-limit the number of challenges for DoS/DDoS protection + $this->track($email, false); + + $session = $this->kirby->session([ + 'createMode' => 'cookie', + 'long' => $long === true + ]); + + $challenge = null; + if ($user = $this->kirby->users()->find($email)) { + $timeout = $this->kirby->option('auth.challenge.timeout', 10 * 60); + + $challenges = $this->kirby->option('auth.challenges', ['email']); + foreach (A::wrap($challenges) as $name) { + $class = static::$challenges[$name] ?? null; + if ( + $class && + class_exists($class) === true && + is_subclass_of($class, 'Kirby\Cms\Auth\Challenge') === true && + $class::isAvailable($user, $mode) === true + ) { + $challenge = $name; + $code = $class::create($user, compact('mode', 'timeout')); + + $session->set('kirby.challenge.type', $challenge); + + if ($code !== null) { + $session->set('kirby.challenge.code', password_hash($code, PASSWORD_DEFAULT)); + $session->set('kirby.challenge.timeout', time() + $timeout); + } + + break; + } + } + + // if no suitable challenge was found, `$challenge === null` at this point; + // only leak this in debug mode, otherwise `null` is returned below + if ($challenge === null && $this->kirby->option('debug') === true) { + throw new LogicException('Could not find a suitable authentication challenge'); + } + } else { + $this->kirby->trigger('user.login:failed', compact('email')); + + // only leak the non-existing user in debug mode + if ($this->kirby->option('debug') === true) { + throw new NotFoundException([ + 'key' => 'user.notFound', + 'data' => [ + 'name' => $email + ] + ]); + } + } + + // always set the email, even if the challenge won't be + // created to avoid leaking whether the user exists + $session->set('kirby.challenge.email', $email); + + // sleep for a random amount of milliseconds + // to make automated attacks harder and to + // avoid leaking whether the user exists + usleep(random_int(1000, 300000)); + + return $challenge; + } + /** * Returns the csrf token if it exists and if it is valid * @@ -73,6 +182,19 @@ class Auth throw new PermissionException('Basic authentication is not activated'); } + // if logging in with password is disabled, basic auth cannot be possible either + $loginMethods = $this->kirby->system()->loginMethods(); + if (isset($loginMethods['password']) !== true) { + throw new PermissionException('Login with password is not enabled'); + } + + // if any login method requires 2FA, basic auth without 2FA would be a weakness + foreach ($loginMethods as $method) { + if (isset($method['2fa']) === true && $method['2fa'] === true) { + throw new PermissionException('Basic authentication cannot be used with 2FA'); + } + } + $request = $this->kirby->request(); $auth = $auth ?? $request->auth(); @@ -118,7 +240,7 @@ class Auth $session = $this->kirby->session(['detect' => true]); } - $id = $session->data()->get('user.id'); + $id = $session->data()->get('kirby.userId'); if (is_string($id) !== true) { return null; @@ -135,9 +257,12 @@ class Auth } /** - * Become any existing user + * Become any existing user or disable the current user * - * @param string|null $who User ID or email address + * @param string|null $who User ID or email address, + * `null` to use the actual user again, + * `'kirby'` for a virtual admin user or + * `'nobody'` to disable the actual user * @return \Kirby\Cms\User|null * @throws \Kirby\Exception\NotFoundException if the given user cannot be found */ @@ -152,6 +277,12 @@ class Auth 'id' => 'kirby', 'role' => 'admin', ]); + case 'nobody': + return $this->impersonate = new User([ + 'email' => 'nobody@getkirby.com', + 'id' => 'nobody', + 'role' => 'nobody', + ]); default: if ($user = $this->kirby->users()->find($who)) { return $this->impersonate = $user; @@ -231,6 +362,25 @@ class Auth return $user; } + /** + * Login a user by email, password and auth challenge + * + * @param string $email + * @param string $password + * @param bool $long + * @return string|null Name of the challenge that was created; + * `null` if no challenge was available for the user + * + * @throws \Kirby\Exception\PermissionException If the rate limit was exceeded or if any other error occured with debug mode off + * @throws \Kirby\Exception\NotFoundException If the email was invalid + * @throws \Kirby\Exception\InvalidArgumentException If the password is not valid (via `$user->login()`) + */ + public function login2fa(string $email, string $password, bool $long = false) + { + $this->validatePassword($email, $password); + return $this->createChallenge($email, $long, '2fa'); + } + /** * Sets a user object as the current user in the cache * @internal @@ -271,7 +421,7 @@ class Auth $message = 'Rate limit exceeded'; } else { // avoid leaking security-relevant information - $message = 'Invalid email or password'; + $message = ['key' => 'access.login']; } throw new PermissionException($message); @@ -304,7 +454,7 @@ class Auth if ($this->kirby->option('debug') === true) { throw $e; } else { - throw new PermissionException('Invalid email or password'); + throw new PermissionException(['key' => 'access.login']); } } } @@ -377,6 +527,13 @@ class Auth if ($user = $this->user()) { $user->logout(); } + + // clear the pending challenge + $session = $this->kirby->session(); + $session->remove('kirby.challenge.code'); + $session->remove('kirby.challenge.email'); + $session->remove('kirby.challenge.timeout'); + $session->remove('kirby.challenge.type'); } /** @@ -394,12 +551,15 @@ class Auth /** * Tracks a login * - * @param string $email + * @param string|null $email + * @param bool $triggerHook If `false`, no user.login:failed hook is triggered * @return bool */ - public function track(string $email): bool + public function track(?string $email, bool $triggerHook = true): bool { - $this->kirby->trigger('user.login:failed', compact('email')); + if ($triggerHook === true) { + $this->kirby->trigger('user.login:failed', compact('email')); + } $ip = $this->ipHash(); $log = $this->log(); @@ -417,7 +577,7 @@ class Auth ]; } - if ($this->kirby->users()->find($email)) { + if ($email !== null && $this->kirby->users()->find($email)) { if (isset($log['by-email'][$email]) === true) { $log['by-email'][$email] = [ 'time' => $time, @@ -462,7 +622,7 @@ class Auth * @param \Kirby\Session\Session|array|null $session * @param bool $allowImpersonation If set to false, only the actually * logged in user will be returned - * @return \Kirby\Cms\User + * @return \Kirby\Cms\User|null * * @throws \Throwable If an authentication error occured */ @@ -499,4 +659,89 @@ class Auth throw $e; } } + + /** + * Verifies an authentication code that was + * requested with the `createChallenge()` method; + * if successful, the user is automatically logged in + * + * @param string $code User-provided auth code to verify + * @return \Kirby\Cms\User User object of the logged-in user + * + * @throws \Kirby\Exception\PermissionException If the rate limit was exceeded, the challenge timed out, the code + * is incorrect or if any other error occured with debug mode off + * @throws \Kirby\Exception\NotFoundException If the user from the challenge doesn't exist + * @throws \Kirby\Exception\InvalidArgumentException If no authentication challenge is active + * @throws \Kirby\Exception\LogicException If the authentication challenge is invalid + */ + public function verifyChallenge(string $code) + { + try { + $session = $this->kirby->session(); + + // first check if we have an active challenge at all + $email = $session->get('kirby.challenge.email'); + $challenge = $session->get('kirby.challenge.type'); + if (is_string($email) !== true || is_string($challenge) !== true) { + throw new InvalidArgumentException('No authentication challenge is active'); + } + + $user = $this->kirby->users()->find($email); + if ($user === null) { + throw new NotFoundException([ + 'key' => 'user.notFound', + 'data' => [ + 'name' => $email + ] + ]); + } + + // rate-limiting + if ($this->isBlocked($email) === true) { + $this->kirby->trigger('user.login:failed', compact('email')); + throw new PermissionException('Rate limit exceeded'); + } + + // time-limiting + $timeout = $session->get('kirby.challenge.timeout'); + if ($timeout !== null && time() > $timeout) { + throw new PermissionException('Authentication challenge timeout'); + } + + if ( + isset(static::$challenges[$challenge]) === true && + class_exists(static::$challenges[$challenge]) === true && + is_subclass_of(static::$challenges[$challenge], 'Kirby\Cms\Auth\Challenge') === true + ) { + $class = static::$challenges[$challenge]; + if ($class::verify($user, $code) === true) { + $this->logout(); + $user->loginPasswordless(); + + return $user; + } else { + throw new PermissionException(['key' => 'access.code']); + } + } + + throw new LogicException('Invalid authentication challenge: ' . $challenge); + } catch (Throwable $e) { + if ($e->getMessage() !== 'Rate limit exceeded') { + $this->track($email); + } + + // sleep for a random amount of milliseconds + // to make automated attacks harder and to + // avoid leaking whether the user exists + usleep(random_int(1000, 2000000)); + + // keep throwing the original error in debug mode, + // otherwise hide it to avoid leaking security-relevant information + if ($this->kirby->option('debug') === true) { + throw $e; + } else { + throw new PermissionException(['key' => 'access.code']); + } + } + } } diff --git a/kirby/src/Cms/Auth/Challenge.php b/kirby/src/Cms/Auth/Challenge.php new file mode 100755 index 0000000..bc4adf3 --- /dev/null +++ b/kirby/src/Cms/Auth/Challenge.php @@ -0,0 +1,63 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier GmbH + * @license https://getkirby.com/license + */ +abstract class Challenge +{ + /** + * Checks whether the challenge is available + * for the passed user and purpose + * + * @param \Kirby\Cms\User $user User the code will be generated for + * @param string $mode Purpose of the code ('login', 'reset' or '2fa') + * @return bool + */ + abstract public static function isAvailable(User $user, string $mode): bool; + + /** + * Generates a random one-time auth code and returns that code + * for later verification + * + * @param \Kirby\Cms\User $user User to generate the code for + * @param array $options Details of the challenge request: + * - 'mode': Purpose of the code ('login', 'reset' or '2fa') + * - 'timeout': Number of seconds the code will be valid for + * @return string|null The generated and sent code or `null` in case + * there was no code to generate by this algorithm + */ + abstract public static function create(User $user, array $options): ?string; + + /** + * Verifies the provided code against the created one; + * default implementation that checks the code that was + * returned from the `create()` method + * + * @param \Kirby\Cms\User $user User to check the code for + * @param string $code Code to verify + * @return bool + */ + public static function verify(User $user, string $code): bool + { + $hash = $user->kirby()->session()->get('kirby.challenge.code'); + if (is_string($hash) !== true) { + return false; + } + + // normalize the formatting in the user-provided code + $code = str_replace(' ', '', $code); + + return password_verify($code, $hash); + } +} diff --git a/kirby/src/Cms/Auth/EmailChallenge.php b/kirby/src/Cms/Auth/EmailChallenge.php new file mode 100755 index 0000000..a406612 --- /dev/null +++ b/kirby/src/Cms/Auth/EmailChallenge.php @@ -0,0 +1,76 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier GmbH + * @license https://getkirby.com/license + */ +class EmailChallenge extends Challenge +{ + /** + * Checks whether the challenge is available + * for the passed user and purpose + * + * @param \Kirby\Cms\User $user User the code will be generated for + * @param string $mode Purpose of the code ('login', 'reset' or '2fa') + * @return bool + */ + public static function isAvailable(User $user, string $mode): bool + { + return true; + } + + /** + * Generates a random one-time auth code and returns that code + * for later verification + * + * @param \Kirby\Cms\User $user User to generate the code for + * @param array $options Details of the challenge request: + * - 'mode': Purpose of the code ('login', 'reset' or '2fa') + * - 'timeout': Number of seconds the code will be valid for + * @return string The generated and sent code + */ + public static function create(User $user, array $options): string + { + $code = Str::random(6, 'num'); + + // insert a space in the middle for easier readability + $formatted = substr($code, 0, 3) . ' ' . substr($code, 3, 3); + + // use the login templates for 2FA + $mode = $options['mode']; + if ($mode === '2fa') { + $mode = 'login'; + } + + $kirby = $user->kirby(); + $kirby->email([ + 'from' => $kirby->option('auth.challenge.email.from', 'noreply@' . $kirby->system()->indexUrl()), + 'fromName' => $kirby->option('auth.challenge.email.fromName', $kirby->site()->title()), + 'to' => $user, + 'subject' => $kirby->option( + 'auth.challenge.email.subject', + I18n::translate('login.email.' . $mode . '.subject') + ), + 'template' => 'auth/' . $mode, + 'data' => [ + 'user' => $user, + 'code' => $formatted, + 'timeout' => round($options['timeout'] / 60) + ] + ]); + + return $code; + } +} diff --git a/kirby/src/Cms/Block.php b/kirby/src/Cms/Block.php new file mode 100755 index 0000000..4b5166b --- /dev/null +++ b/kirby/src/Cms/Block.php @@ -0,0 +1,217 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier GmbH + * @license https://getkirby.com/license + */ +class Block extends Item +{ + const ITEMS_CLASS = '\Kirby\Cms\Blocks'; + + /** + * @var \Kirby\Cms\Content + */ + protected $content; + + /** + * @var bool + */ + protected $isHidden; + + /** + * @var string + */ + protected $type; + + /** + * Proxy for content fields + * + * @param string $method + * @param array $args + * @return \Kirby\Cms\Field + */ + public function __call(string $method, array $args = []) + { + return $this->content()->get($method); + } + + /** + * Creates a new block object + * + * @param array $params + * @param \Kirby\Cms\Blocks $siblings + */ + public function __construct(array $params) + { + parent::__construct($params); + + // import old builder format + $params = BlockConverter::builderBlock($params); + $params = BlockConverter::editorBlock($params); + + if (isset($params['type']) === false) { + throw new InvalidArgumentException('The block type is missing'); + } + + $this->content = $params['content'] ?? []; + $this->isHidden = $params['isHidden'] ?? false; + $this->type = $params['type'] ?? null; + + // create the content object + $this->content = new Content($this->content, $this->parent); + } + + /** + * Converts the object to a string + * + * @return string + */ + public function __toString(): string + { + return $this->toHtml(); + } + + /** + * Deprecated method to return the block type + * + * @return string + */ + public function _key(): string + { + return $this->type(); + } + + /** + * Deprecated method to return the block id + * + * @return string + */ + public function _uid(): string + { + return $this->id(); + } + + /** + * Returns the content object + * + * @return \Kirby\Cms\Content + */ + public function content() + { + return $this->content; + } + + /** + * Controller for the block snippet + * + * @return array + */ + public function controller(): array + { + return [ + 'block' => $this, + 'content' => $this->content(), + // deprecated block data + 'data' => $this, + 'id' => $this->id(), + 'prev' => $this->prev(), + 'next' => $this->next() + ]; + } + + /** + * Checks if the block is empty + * + * @return bool + */ + public function isEmpty(): bool + { + return empty($this->content()->toArray()); + } + + /** + * Checks if the block is hidden + * from being rendered in the frontend + * + * @return bool + */ + public function isHidden(): bool + { + return $this->isHidden; + } + + /** + * Checks if the block is not empty + * + * @return bool + */ + public function isNotEmpty(): bool + { + return $this->isEmpty() === false; + } + + /** + * Returns the block type + * + * @return string + */ + public function type(): string + { + return $this->type; + } + + /** + * The result is being sent to the editor + * via the API in the panel + * + * @return array + */ + public function toArray(): array + { + return [ + 'content' => $this->content()->toArray(), + 'id' => $this->id(), + 'isHidden' => $this->isHidden(), + 'type' => $this->type(), + ]; + } + + /** + * Converts the block to html first + * and then places that inside a field + * object. This can be used further + * with all available field methods + * + * @return \Kirby\Cms\Field; + */ + public function toField() + { + return new Field($this->parent(), $this->id(), $this->toHtml()); + } + + /** + * Converts the block to HTML + * + * @return string + */ + public function toHtml(): string + { + try { + return (string)snippet('blocks/' . $this->type(), $this->controller(), true); + } catch (Throwable $e) { + return '

Block error: "' . $e->getMessage() . '" in block type: "' . $this->type() . '"

'; + } + } +} diff --git a/kirby/src/Cms/BlockConverter.php b/kirby/src/Cms/BlockConverter.php new file mode 100755 index 0000000..56c366f --- /dev/null +++ b/kirby/src/Cms/BlockConverter.php @@ -0,0 +1,258 @@ + $block) { + if (in_array($block['type'], ['ul', 'ol']) === true) { + $prev = $blocks[$index-1] ?? null; + $next = $blocks[$index+1] ?? null; + + // new list starts here + if (!$prev || $prev['type'] !== $block['type']) { + $listStart = $index; + } + + // add the block to the list + $list[] = $block; + + // list ends here + if (!$next || $next['type'] !== $block['type']) { + $blocks[$listStart] = [ + 'content' => [ + 'text' => + '<' . $block['type'] . '>' . + implode(array_map(function ($item) { + return '
  • ' . $item['content'] . '
  • '; + }, $list)) . + '', + ], + 'type' => 'list' + ]; + + for ($x = $listStart+1; $x <= $listStart + count($list); $x++) { + $blocks[$x] = false; + } + + $listStart = null; + $list = []; + } + } else { + $blocks[$index] = static::editorBlock($block); + } + } + + return array_filter($blocks); + } + + public static function editorBlockquote(array $params): array + { + return [ + 'content' => [ + 'text' => $params['content'] + ], + 'type' => 'quote' + ]; + } + + public static function editorCode(array $params): array + { + return [ + 'content' => [ + 'language' => $params['attrs']['language'] ?? null, + 'code' => $params['content'] + ], + 'type' => 'code' + ]; + } + + public static function editorCustom(array $params): array + { + return [ + 'content' => array_merge( + $params['attrs'] ?? [], + [ + 'body' => $params['content'] ?? null + ] + ), + 'type' => $params['type'] ?? 'unknown' + ]; + } + + public static function editorH1(array $params): array + { + return static::editorHeading($params, 'h1'); + } + + public static function editorH2(array $params): array + { + return static::editorHeading($params, 'h2'); + } + + public static function editorH3(array $params): array + { + return static::editorHeading($params, 'h3'); + } + + public static function editorH4(array $params): array + { + return static::editorHeading($params, 'h4'); + } + + public static function editorH5(array $params): array + { + return static::editorHeading($params, 'h5'); + } + + public static function editorH6(array $params): array + { + return static::editorHeading($params, 'h6'); + } + + public static function editorHeading(array $params, string $level): array + { + return [ + 'content' => [ + 'level' => $level, + 'text' => $params['content'] + ], + 'type' => 'heading' + ]; + } + + public static function editorImage(array $params): array + { + // internal image + if (isset($params['attrs']['id']) === true) { + return [ + 'content' => [ + 'alt' => $params['attrs']['alt'] ?? null, + 'caption' => $params['attrs']['caption'] ?? null, + 'image' => $params['attrs']['id'] ?? $params['attrs']['src'] ?? null, + 'location' => 'kirby', + 'ratio' => $params['attrs']['ratio'] ?? null, + ], + 'type' => 'image' + ]; + } + + return [ + 'content' => [ + 'alt' => $params['attrs']['alt'] ?? null, + 'caption' => $params['attrs']['caption'] ?? null, + 'src' => $params['attrs']['src'] ?? null, + 'location' => 'web', + 'ratio' => $params['attrs']['ratio'] ?? null, + ], + 'type' => 'image' + ]; + } + + public static function editorKirbytext(array $params): array + { + return [ + 'content' => [ + 'text' => $params['content'] + ], + 'type' => 'markdown' + ]; + } + + public static function editorOl(array $params): array + { + return [ + 'content' => [ + 'text' => $params['content'] + ], + 'type' => 'list' + ]; + } + + public static function editorParagraph(array $params): array + { + return [ + 'content' => [ + 'text' => $params['content'] + ], + 'type' => 'text' + ]; + } + + public static function editorUl(array $params): array + { + return [ + 'content' => [ + 'text' => $params['content'] + ], + 'type' => 'list' + ]; + } + + public static function editorVideo(array $params): array + { + return [ + 'content' => [ + 'caption' => $params['attrs']['caption'] ?? null, + 'url' => $params['attrs']['src'] ?? null + ], + 'type' => 'video' + ]; + } + + public static function isEditorBlock(array $params): bool + { + if (isset($params['attrs']) === true) { + return true; + } + + if (is_string($params['content'] ?? null) === true) { + return true; + } + + return false; + } +} diff --git a/kirby/src/Cms/Blocks.php b/kirby/src/Cms/Blocks.php new file mode 100755 index 0000000..32adc93 --- /dev/null +++ b/kirby/src/Cms/Blocks.php @@ -0,0 +1,149 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier GmbH + * @license https://getkirby.com/license + */ +class Blocks extends Items +{ + const ITEM_CLASS = '\Kirby\Cms\Block'; + + /** + * Return HTML when the collection is + * converted to a string + * + * @return string + */ + public function __toString(): string + { + return $this->toHtml(); + } + + /** + * Converts the blocks to HTML and then + * uses the Str::excerpt method to create + * a non-formatted, shortened excerpt from it + * + * @param mixed ...$args + * @return string + */ + public function excerpt(...$args) + { + return Str::excerpt($this->toHtml(), ...$args); + } + + /** + * Wrapper around the factory to + * catch blocks from layouts + * + * @param array $items + * @param array $params + * @return \Kirby\Cms\Blocks + */ + public static function factory(array $blocks = null, array $params = []) + { + $blocks = static::extractFromLayouts($blocks); + $blocks = BlockConverter::editorBlocks($blocks); + + return parent::factory($blocks, $params); + } + + /** + * Pull out blocks from layouts + * + * @param array $input + * @return array + */ + protected static function extractFromLayouts(array $input): array + { + if (empty($input) === true) { + return []; + } + + // no layouts + if (array_key_exists('columns', $input[0]) === false) { + return $input; + } + + $blocks = []; + + foreach ($input as $layout) { + foreach (($layout['columns'] ?? []) as $column) { + foreach (($column['blocks'] ?? []) as $block) { + $blocks[] = $block; + } + } + } + + return $blocks; + } + + /** + * Parse and sanitize various block formats + * + * @param array|string $input + * @return array + */ + public static function parse($input): array + { + if (empty($input) === false && is_array($input) === false) { + try { + $input = Json::decode((string)$input); + } catch (Throwable $e) { + try { + // try to import the old YAML format + $yaml = Yaml::decode((string)$input); + $first = A::first($yaml); + + // check for valid yaml + if (empty($yaml) === true || (isset($first['_key']) === false && isset($first['type']) === false)) { + throw new Exception('Invalid YAML'); + } else { + $input = $yaml; + } + } catch (Throwable $e) { + $parser = new Parsley((string)$input, new BlockSchema()); + $input = $parser->blocks(); + } + } + } + + if (empty($input) === true) { + return []; + } + + return $input; + } + + /** + * Convert all blocks to HTML + * + * @return string + */ + public function toHtml(): string + { + $html = []; + + foreach ($this->data as $block) { + $html[] = $block->toHtml(); + } + + return implode($html); + } +} diff --git a/kirby/src/Cms/Blueprint.php b/kirby/src/Cms/Blueprint.php index edfc9fe..db3ce55 100755 --- a/kirby/src/Cms/Blueprint.php +++ b/kirby/src/Cms/Blueprint.php @@ -201,6 +201,7 @@ class Blueprint try { $mixin = static::find($extends); + $mixin = static::extend($mixin); $props = A::merge($mixin, $props, A::MERGE_REPLACE); } catch (Exception $e) { // keep the props unextended if the snippet wasn't found diff --git a/kirby/src/Cms/Collection.php b/kirby/src/Cms/Collection.php index 4bb9431..ecbe57d 100755 --- a/kirby/src/Cms/Collection.php +++ b/kirby/src/Cms/Collection.php @@ -3,7 +3,6 @@ namespace Kirby\Cms; use Closure; -use Exception; use Kirby\Exception\InvalidArgumentException; use Kirby\Toolkit\Collection as BaseCollection; use Kirby\Toolkit\Str; @@ -89,7 +88,7 @@ class Collection extends BaseCollection { if (is_a($object, static::class) === true) { $this->data = array_merge($this->data, $object->data); - } elseif (method_exists($object, 'id') === true) { + } elseif (is_object($object) === true && method_exists($object, 'id') === true) { $this->__set($object->id(), $object); } else { $this->append($object); @@ -121,45 +120,45 @@ class Collection extends BaseCollection } /** - * Groups the items by a given field. Returns a collection + * Groups the items by a given field or callback. Returns a collection * with an item for each group and a collection for each group. * - * @param string $field + * @param string|Closure $field * @param bool $i Ignore upper/lowercase for group names * @return \Kirby\Cms\Collection * @throws \Kirby\Exception\Exception */ - public function groupBy($field, bool $i = true) + public function group($field, bool $i = true) { - if (is_string($field) === false) { - throw new Exception('Cannot group by non-string values. Did you mean to call group()?'); + if (is_string($field) === true) { + $groups = new Collection([], $this->parent()); + + foreach ($this->data as $key => $item) { + $value = $this->getAttribute($item, $field); + + // make sure that there's always a proper value to group by + if (!$value) { + throw new InvalidArgumentException('Invalid grouping value for key: ' . $key); + } + + // ignore upper/lowercase for group names + if ($i) { + $value = Str::lower($value); + } + + if (isset($groups->data[$value]) === false) { + // create a new entry for the group if it does not exist yet + $groups->data[$value] = new static([$key => $item]); + } else { + // add the item to an existing group + $groups->data[$value]->set($key, $item); + } + } + + return $groups; } - $groups = new Collection([], $this->parent()); - - foreach ($this->data as $key => $item) { - $value = $this->getAttribute($item, $field); - - // make sure that there's always a proper value to group by - if (!$value) { - throw new InvalidArgumentException('Invalid grouping value for key: ' . $key); - } - - // ignore upper/lowercase for group names - if ($i) { - $value = Str::lower($value); - } - - if (isset($groups->data[$value]) === false) { - // create a new entry for the group if it does not exist yet - $groups->data[$value] = new static([$key => $item]); - } else { - // add the item to an existing group - $groups->data[$value]->set($key, $item); - } - } - - return $groups; + return parent::group($field, $i); } /** @@ -204,6 +203,7 @@ class Collection extends BaseCollection public function not(...$keys) { $collection = $this->clone(); + foreach ($keys as $key) { if (is_array($key) === true) { return $this->not(...$key); @@ -212,8 +212,10 @@ class Collection extends BaseCollection } elseif (is_object($key) === true) { $key = $key->id(); } - unset($collection->$key); + + unset($collection->{$key}); } + return $collection; } @@ -264,7 +266,7 @@ class Collection extends BaseCollection } /** - * Runs a combination of filterBy, sortBy, not + * Runs a combination of filter, sort, not, * offset, limit, search and paginate on the collection. * Any part of the query is optional. * diff --git a/kirby/src/Cms/Event.php b/kirby/src/Cms/Event.php index deaccdc..309c0d4 100755 --- a/kirby/src/Cms/Event.php +++ b/kirby/src/Cms/Event.php @@ -157,7 +157,7 @@ class Event * @param \Closure $hook * @return mixed */ - public function call($bind = null, Closure $hook) + public function call(?object $bind, Closure $hook) { // collect the list of possible hook arguments $data = $this->arguments(); diff --git a/kirby/src/Cms/Field.php b/kirby/src/Cms/Field.php index e6632e1..50969e9 100755 --- a/kirby/src/Cms/Field.php +++ b/kirby/src/Cms/Field.php @@ -96,7 +96,7 @@ class Field * @param string $key * @param mixed $value */ - public function __construct($parent = null, string $key, $value) + public function __construct(?object $parent, string $key, $value) { $this->key = $key; $this->value = $value; diff --git a/kirby/src/Cms/Fieldset.php b/kirby/src/Cms/Fieldset.php new file mode 100755 index 0000000..e8956e1 --- /dev/null +++ b/kirby/src/Cms/Fieldset.php @@ -0,0 +1,206 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier GmbH + * @license https://getkirby.com/license + */ +class Fieldset extends Item +{ + const ITEMS_CLASS = '\Kirby\Cms\Fieldsets'; + + protected $disabled; + protected $fields = []; + protected $icon; + protected $label; + protected $model; + protected $name; + protected $preview; + protected $tabs; + protected $translate; + protected $type; + protected $unset; + protected $wysiwyg; + + /** + * Creates a new Fieldset object + * + * @param array $params + */ + public function __construct(array $params = []) + { + if (empty($params['type']) === true) { + throw new InvalidArgumentException('The fieldset type is missing'); + } + + $this->type = $params['id'] = $params['type']; + + parent::__construct($params); + + $this->disabled = $params['disabled'] ?? false; + $this->icon = $params['icon'] ?? null; + $this->model = $this->parent; + $this->kirby = $this->parent->kirby(); + $this->name = $this->createName($params['name'] ?? Str::ucfirst($this->type)); + $this->label = $this->createLabel($params['label'] ?? null); + $this->preview = $params['preview'] ?? null; + $this->tabs = $this->createTabs($params); + $this->translate = $params['translate'] ?? true; + $this->unset = $params['unset'] ?? false; + $this->wysiwyg = $params['wysiwyg'] ?? false; + + if ( + $this->translate === false && + $this->kirby->multilang() === true && + $this->kirby->language()->isDefault() === false + ) { + // disable and unset the fieldset if it's not translatable + $this->unset = true; + $this->disabled = true; + } + } + + protected function createFields(array $fields = []): array + { + $fields = Blueprint::fieldsProps($fields); + $fields = $this->form($fields)->fields()->toArray(); + + // collect all fields + $this->fields = array_merge($this->fields, $fields); + + return $fields; + } + + protected function createName($name): string + { + return I18n::translate($name, $name); + } + + protected function createLabel($label = null): ?string + { + return I18n::translate($label, $label); + } + + protected function createTabs(array $params = []): array + { + $tabs = $params['tabs'] ?? []; + + // return a single tab if there are only fields + if (empty($tabs) === true) { + return [ + 'content' => [ + 'fields' => $this->createFields($params['fields'] ?? []), + ] + ]; + } + + // normalize tabs props + foreach ($tabs as $name => $tab) { + $tab = Blueprint::extend($tab); + + $tab['fields'] = $this->createFields($tab['fields'] ?? []); + $tab['label'] = $this->createLabel($tab['label'] ?? Str::ucfirst($name)); + $tab['name'] = $name; + + $tabs[$name] = $tab; + } + + return $tabs; + } + + public function disabled(): bool + { + return $this->disabled; + } + + public function fields(): array + { + return $this->fields; + } + + /** + * Creates a form for the given fields + * + * @param array $fields + * @param array $input + * @return \Kirby\Cms\Form + */ + public function form(array $fields, array $input = []) + { + return new Form([ + 'fields' => $fields, + 'model' => $this->model, + 'strict' => true, + 'values' => $input, + ]); + } + + public function icon(): ?string + { + return $this->icon; + } + + public function label(): ?string + { + return $this->label; + } + + public function model() + { + return $this->model; + } + + public function name(): string + { + return $this->name; + } + + public function tabs(): array + { + return $this->tabs; + } + + public function translate(): bool + { + return $this->translate; + } + + public function type(): string + { + return $this->type; + } + + /** + * @return array + */ + public function toArray(): array + { + return [ + 'disabled' => $this->disabled, + 'icon' => $this->icon, + 'label' => $this->label, + 'name' => $this->name, + 'preview' => $this->preview, + 'tabs' => $this->tabs, + 'translate' => $this->translate, + 'type' => $this->type, + 'unset' => $this->unset, + 'wysiwyg' => $this->wysiwyg, + ]; + } + + public function unset(): bool + { + return $this->unset; + } +} diff --git a/kirby/src/Cms/Fieldsets.php b/kirby/src/Cms/Fieldsets.php new file mode 100755 index 0000000..4b78bb5 --- /dev/null +++ b/kirby/src/Cms/Fieldsets.php @@ -0,0 +1,99 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier GmbH + * @license https://getkirby.com/license + */ +class Fieldsets extends Items +{ + const ITEM_CLASS = '\Kirby\Cms\Fieldset'; + + protected static function createFieldsets($params) + { + $fieldsets = []; + $groups = []; + + foreach ($params as $type => $fieldset) { + if (is_int($type) === true && is_string($fieldset)) { + $type = $fieldset; + $fieldset = 'blocks/' . $type; + } + + if ($fieldset === false) { + continue; + } + + if ($fieldset === true) { + $fieldset = 'blocks/' . $type; + } + + $fieldset = Blueprint::extend($fieldset); + + // make sure the type is always set + $fieldset['type'] = $fieldset['type'] ?? $type; + + // extract groups + if ($fieldset['type'] === 'group') { + $result = static::createFieldsets($fieldset['fieldsets'] ?? []); + $fieldsets = array_merge($fieldsets, $result['fieldsets']); + $label = $fieldset['label'] ?? Str::ucfirst($type); + + $groups[$type] = [ + 'label' => I18n::translate($label, $label), + 'name' => $type, + 'open' => $fieldset['open'] ?? true, + 'sets' => array_column($result['fieldsets'], 'type'), + ]; + } else { + $fieldsets[$fieldset['type']] = $fieldset; + } + } + + return [ + 'fieldsets' => $fieldsets, + 'groups' => $groups + ]; + } + + public static function factory(array $fieldsets = null, array $options = []) + { + $fieldsets = $fieldsets ?? option('blocks.fieldsets', [ + 'code' => 'blocks/code', + 'gallery' => 'blocks/gallery', + 'heading' => 'blocks/heading', + 'image' => 'blocks/image', + 'list' => 'blocks/list', + 'markdown' => 'blocks/markdown', + 'quote' => 'blocks/quote', + 'text' => 'blocks/text', + 'video' => 'blocks/video', + ]); + + $result = static::createFieldsets($fieldsets); + + return parent::factory($result['fieldsets'], ['groups' => $result['groups']] + $options); + } + + public function groups(): array + { + return $this->options['groups'] ?? []; + } + + public function toArray(?Closure $map = null): array + { + return array_map($map ?? function ($fieldset) { + return $fieldset->toArray(); + }, $this->data); + } +} diff --git a/kirby/src/Cms/File.php b/kirby/src/Cms/File.php index 45dda5e..33aa390 100755 --- a/kirby/src/Cms/File.php +++ b/kirby/src/Cms/File.php @@ -385,19 +385,6 @@ class File extends ModelWithContent return $this->parent()->mediaUrl() . '/' . $this->mediaHash() . '/' . $this->filename(); } - /** - * @deprecated 3.0.0 Use `File::content()` instead - * - * @return \Kirby\Cms\Content - * @codeCoverageIgnore - */ - public function meta() - { - deprecated('$file->meta() is deprecated, use $file->content() instead. $file->meta() will be removed in Kirby 3.5.0.'); - - return $this->content(); - } - /** * Get the file's last modification time. * @@ -758,7 +745,7 @@ class File extends ModelWithContent */ public function templateSiblings(bool $self = true) { - return $this->siblings($self)->filterBy('template', $this->template()); + return $this->siblings($self)->filter('template', $this->template()); } /** diff --git a/kirby/src/Cms/FileActions.php b/kirby/src/Cms/FileActions.php index 6b188be..91b8f3f 100755 --- a/kirby/src/Cms/FileActions.php +++ b/kirby/src/Cms/FileActions.php @@ -264,21 +264,6 @@ trait FileActions return $this; } - /** - * @deprecated 3.0.0 Use `File::changeName()` instead - * - * @param string $name - * @param bool $sanitize - * @return self - * @codeCoverageIgnore - */ - public function rename(string $name, bool $sanitize = true) - { - deprecated('$file->rename() is deprecated, use $file->changeName() instead. $file->rename() will be removed in Kirby 3.5.0.'); - - return $this->changeName($name, $sanitize); - } - /** * Replaces the file. The source must * be an absolute path to a file or a Url. diff --git a/kirby/src/Cms/FileBlueprint.php b/kirby/src/Cms/FileBlueprint.php index 9323e67..ee2e0f9 100755 --- a/kirby/src/Cms/FileBlueprint.php +++ b/kirby/src/Cms/FileBlueprint.php @@ -2,6 +2,9 @@ namespace Kirby\Cms; +use Kirby\Toolkit\F; +use Kirby\Toolkit\Str; + /** * Extension of the basic blueprint class * to handle all blueprints for files. @@ -14,6 +17,14 @@ namespace Kirby\Cms; */ class FileBlueprint extends Blueprint { + /** + * `true` if the default accepted + * types are being used + * + * @var bool + */ + protected $defaultTypes = false; + public function __construct(array $props) { parent::__construct($props); @@ -44,6 +55,64 @@ class FileBlueprint extends Blueprint return $this->props['accept']; } + /** + * Returns the list of all accepted MIME types for + * file upload or `*` if all MIME types are allowed + * + * @return string + */ + public function acceptMime(): string + { + // don't disclose the specific default types + if ($this->defaultTypes === true) { + return '*'; + } + + $accept = $this->accept(); + $restrictions = []; + + if (is_array($accept['mime']) === true) { + $restrictions[] = $accept['mime']; + } else { + // only fall back to the extension or type if + // no explicit MIME types were defined + // (allows to set custom MIME types for the frontend + // check but still restrict the extension and/or type) + + if (is_array($accept['extension']) === true) { + // determine the main MIME type for each extension + $restrictions[] = array_map(['Kirby\Toolkit\Mime', 'fromExtension'], $accept['extension']); + } + + if (is_array($accept['type']) === true) { + // determine the MIME types of each file type + $mimes = []; + foreach ($accept['type'] as $type) { + if ($extensions = F::typeToExtensions($type)) { + $mimes[] = array_map(['Kirby\Toolkit\Mime', 'fromExtension'], $extensions); + } + } + + $restrictions[] = array_merge(...$mimes); + } + } + + if ($restrictions !== []) { + if (count($restrictions) > 1) { + // only return the MIME types that are allowed by all restrictions + $mimes = array_intersect(...$restrictions); + } else { + $mimes = $restrictions[0]; + } + + // filter out empty MIME types and duplicates + return implode(', ', array_filter(array_unique($mimes))); + } + + // no restrictions, accept everything + return '*'; + } + /** * @param mixed $accept * @return array @@ -54,16 +123,20 @@ class FileBlueprint extends Blueprint $accept = [ 'mime' => $accept ]; - } - - // accept anything - if (empty($accept) === true) { - return []; + } elseif ($accept === true) { + // explicitly no restrictions at all + $accept = [ + 'mime' => null + ]; + } elseif (empty($accept) === true) { + // no custom restrictions + $accept = []; } $accept = array_change_key_case($accept); $defaults = [ + 'extension' => null, 'mime' => null, 'maxheight' => null, 'maxsize' => null, @@ -71,9 +144,38 @@ class FileBlueprint extends Blueprint 'minheight' => null, 'minsize' => null, 'minwidth' => null, - 'orientation' => null + 'orientation' => null, + 'type' => null ]; - return array_merge($defaults, $accept); + // default type restriction if none are configured; + // this ensures that no unexpected files are uploaded + if ( + array_key_exists('mime', $accept) === false && + array_key_exists('extension', $accept) === false && + array_key_exists('type', $accept) === false + ) { + $defaults['type'] = ['image', 'document', 'archive', 'audio', 'video']; + $this->defaultTypes = true; + } + + $accept = array_merge($defaults, $accept); + + // normalize the MIME, extension and type from strings into arrays + if (is_string($accept['mime']) === true) { + $accept['mime'] = array_map(function ($mime) { + return $mime['value']; + }, Str::accepted($accept['mime'])); + } + + if (is_string($accept['extension']) === true) { + $accept['extension'] = array_map('trim', explode(',', $accept['extension'])); + } + + if (is_string($accept['type']) === true) { + $accept['type'] = array_map('trim', explode(',', $accept['type'])); + } + + return $accept; } } diff --git a/kirby/src/Cms/Files.php b/kirby/src/Cms/Files.php index 25e28dd..b38dc4d 100755 --- a/kirby/src/Cms/Files.php +++ b/kirby/src/Cms/Files.php @@ -132,6 +132,14 @@ class Files extends Collection return $this; } - return $this->filterBy('template', is_array($template) ? 'in' : '==', $template); + if ($template === 'default') { + $template = ['default', '']; + } + + return $this->filter( + 'template', + is_array($template) ? 'in' : '==', + $template + ); } } diff --git a/kirby/src/Cms/Form.php b/kirby/src/Cms/Form.php index 0bf6e4b..4638085 100755 --- a/kirby/src/Cms/Form.php +++ b/kirby/src/Cms/Form.php @@ -2,7 +2,9 @@ namespace Kirby\Cms; +use Kirby\Exception\NotFoundException; use Kirby\Form\Form as BaseForm; +use Kirby\Toolkit\Str; /** * Extension of `Kirby\Form\Form` that introduces @@ -49,6 +51,42 @@ class Form extends BaseForm parent::__construct($props); } + /** + * Get the field object by name + * and handle nested fields correctly + * + * @param string $name + * @throws \Kirby\Exception\NotFoundException + * @return \Kirby\Form\Field + */ + public function field(string $name) + { + $form = $this; + $fieldNames = Str::split($name, '+'); + $index = 0; + $count = count($fieldNames); + $field = null; + + foreach ($fieldNames as $fieldName) { + $index++; + + if ($field = $form->fields()->get($fieldName)) { + if ($count !== $index) { + $form = $field->form(); + } + } else { + throw new NotFoundException('The field "' . $fieldName . '" could not be found'); + } + } + + // it can get this error only if $name is an empty string as $name = '' + if ($field === null) { + throw new NotFoundException('No field could be loaded'); + } + + return $field; + } + /** * @param \Kirby\Cms\Model $model * @param array $props diff --git a/kirby/src/Cms/HasChildren.php b/kirby/src/Cms/HasChildren.php index 644b718..d9b4bf7 100755 --- a/kirby/src/Cms/HasChildren.php +++ b/kirby/src/Cms/HasChildren.php @@ -174,18 +174,6 @@ trait HasChildren return $this->drafts()->count() > 0; } - /** - * @deprecated 3.0.0 Use `Page::hasUnlistedChildren()` instead - * @return bool - * @codeCoverageIgnore - */ - public function hasInvisibleChildren(): bool - { - deprecated('$page->hasInvisibleChildren() is deprecated, use $page->hasUnlistedChildren() instead. $page->hasInvisibleChildren() will be removed in Kirby 3.5.0.'); - - return $this->hasUnlistedChildren(); - } - /** * Checks if the page has any listed children * @@ -206,18 +194,6 @@ trait HasChildren return $this->children()->unlisted()->count() > 0; } - /** - * @deprecated 3.0.0 Use `Page::hasListedChildren()` instead - * @return bool - * @codeCoverageIgnore - */ - public function hasVisibleChildren(): bool - { - deprecated('$page->hasVisibleChildren() is deprecated, use $page->hasListedChildren() instead. $page->hasVisibleChildren() will be removed in Kirby 3.5.0.'); - - return $this->hasListedChildren(); - } - /** * Creates a flat child index * diff --git a/kirby/src/Cms/HasFiles.php b/kirby/src/Cms/HasFiles.php index 41048a3..fbf2637 100755 --- a/kirby/src/Cms/HasFiles.php +++ b/kirby/src/Cms/HasFiles.php @@ -27,7 +27,7 @@ trait HasFiles */ public function audio() { - return $this->files()->filterBy('type', '==', 'audio'); + return $this->files()->filter('type', '==', 'audio'); } /** @@ -37,7 +37,7 @@ trait HasFiles */ public function code() { - return $this->files()->filterBy('type', '==', 'code'); + return $this->files()->filter('type', '==', 'code'); } /** @@ -74,7 +74,7 @@ trait HasFiles */ public function documents() { - return $this->files()->filterBy('type', '==', 'document'); + return $this->files()->filter('type', '==', 'document'); } /** @@ -196,7 +196,7 @@ trait HasFiles */ public function images() { - return $this->files()->filterBy('type', '==', 'image'); + return $this->files()->filter('type', '==', 'image'); } /** @@ -221,6 +221,6 @@ trait HasFiles */ public function videos() { - return $this->files()->filterBy('type', '==', 'video'); + return $this->files()->filter('type', '==', 'video'); } } diff --git a/kirby/src/Cms/Item.php b/kirby/src/Cms/Item.php new file mode 100755 index 0000000..1f1c8ba --- /dev/null +++ b/kirby/src/Cms/Item.php @@ -0,0 +1,130 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier GmbH + * @license https://getkirby.com/license + */ +class Item +{ + const ITEMS_CLASS = '\Kirby\Cms\Items'; + + use HasSiblings; + + /** + * @var string + */ + protected $id; + + /** + * @var array + */ + protected $params; + + /** + * @var \Kirby\Cms\Items + */ + protected $siblings; + + /** + * Creates a new item + * + * @param array $params + */ + public function __construct(array $params = []) + { + $siblingsClass = static::ITEMS_CLASS; + + $this->id = $params['id'] ?? uuid(); + $this->params = $params; + $this->parent = $params['parent'] ?? site(); + $this->siblings = $params['siblings'] ?? new $siblingsClass(); + } + + /** + * Static Item factory + * + * @param array $params + * @return \Kirby\Cms\Item + */ + public static function factory(array $params) + { + return new static($params); + } + + /** + * Returns the unique item id (UUID v4) + * + * @return string + */ + public function id(): string + { + return $this->id; + } + + /** + * Compares the item to another one + * + * @param \Kirby\Cms\Item $item + * @return bool + */ + public function is(Item $item): bool + { + return $this->id() === $item->id(); + } + + /** + * Returns the Kirby instance + * + * @return \Kirby\Cms\App + */ + public function kirby() + { + return $this->parent()->kirby(); + } + + /** + * Returns the parent model + * + * @return \Kirby\Cms\Page | \Kirby\Cms\Site | \Kirby\Cms\File | \Kirby\Cms\User + */ + public function parent() + { + return $this->parent; + } + + /** + * Returns the sibling collection + * This is required by the HasSiblings trait + * + * @return \Kirby\Editor\Blocks + */ + protected function siblingsCollection() + { + return $this->siblings; + } + + /** + * Converts the item to an array + * + * @return array + */ + public function toArray(): array + { + return [ + 'id' => $this->id(), + ]; + } +} diff --git a/kirby/src/Cms/Items.php b/kirby/src/Cms/Items.php new file mode 100755 index 0000000..f4c893e --- /dev/null +++ b/kirby/src/Cms/Items.php @@ -0,0 +1,96 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier GmbH + * @license https://getkirby.com/license + */ +class Items extends Collection +{ + const ITEM_CLASS = '\Kirby\Cms\Item'; + + /** + * @var array + */ + protected $options; + + /** + * @var \Kirby\Cms\ModelWithContent + */ + protected $parent; + + /** + * Constructor + * + * @param array $objects + * @param array $options + */ + public function __construct($objects = [], array $options = []) + { + $this->options = $options; + $this->parent = $options['parent'] ?? site(); + + parent::__construct($objects, $this->parent); + } + + /** + * Creates a new item collection from a + * an array of item props + * + * @param array $items + * @param array $params + * @return \Kirby\Cms\Items + */ + public static function factory(array $items = null, array $params = []) + { + $options = array_merge([ + 'options' => [], + 'parent' => site(), + ], $params); + + if (empty($items) === true || is_array($items) === false) { + return new static(); + } + + if (is_array($options) === false) { + throw new Exception('Invalid item options'); + } + + // create a new collection of blocks + $collection = new static([], $options); + + foreach ($items as $params) { + if (is_array($params) === false) { + continue; + } + + $params['options'] = $options['options']; + $params['parent'] = $options['parent']; + $params['siblings'] = $collection; + $class = static::ITEM_CLASS; + $item = $class::factory($params); + $collection->append($item->id(), $item); + } + + return $collection; + } + + /** + * Convert the items to an array + * + * @return array + */ + public function toArray(Closure $map = null): array + { + return array_values(parent::toArray($map)); + } +} diff --git a/kirby/src/Cms/KirbyTag.php b/kirby/src/Cms/KirbyTag.php index 86fade3..4a676eb 100755 --- a/kirby/src/Cms/KirbyTag.php +++ b/kirby/src/Cms/KirbyTag.php @@ -27,7 +27,11 @@ class KirbyTag extends \Kirby\Text\KirbyTag { $parent = $this->parent(); - if (method_exists($parent, 'file') === true && $file = $parent->file($path)) { + if ( + is_object($parent) === true && + method_exists($parent, 'file') === true && + $file = $parent->file($path) + ) { return $file; } diff --git a/kirby/src/Cms/Language.php b/kirby/src/Cms/Language.php index c597208..557347d 100755 --- a/kirby/src/Cms/Language.php +++ b/kirby/src/Cms/Language.php @@ -4,9 +4,9 @@ namespace Kirby\Cms; use Kirby\Data\Data; use Kirby\Exception\Exception; -use Kirby\Exception\InvalidArgumentException; use Kirby\Exception\PermissionException; use Kirby\Toolkit\F; +use Kirby\Toolkit\Locale; use Kirby\Toolkit\Str; use Throwable; @@ -328,6 +328,28 @@ class Language extends Model return $this->code; } + /** + * Loads the language rules for provided locale code + * + * @param string $code + */ + public static function loadRules(string $code) + { + $kirby = kirby(); + $code = Str::contains($code, '.') ? Str::before($code, '.') : $code; + $file = $kirby->root('i18n:rules') . '/' . $code . '.json'; + + if (F::exists($file) === false) { + $file = $kirby->root('i18n:rules') . '/' . Str::before($code, '_') . '.json'; + } + + try { + return Data::read($file); + } catch (\Exception $e) { + return []; + } + } + /** * Returns the PHP locale setting array * @@ -343,45 +365,6 @@ class Language extends Model } } - /** - * Returns the locale array but with the locale - * constants replaced with their string representations - * - * @return array - */ - protected function localeExport(): array - { - // list of all possible constant names - $constantNames = [ - 'LC_ALL', 'LC_COLLATE', 'LC_CTYPE', 'LC_MONETARY', - 'LC_NUMERIC', 'LC_TIME', 'LC_MESSAGES' - ]; - - // build an associative array with the locales - // that are actually supported on this system - $constants = []; - foreach ($constantNames as $name) { - if (defined($name) === true) { - $constants[constant($name)] = $name; - } - } - - // replace the keys in the locale data array with the locale names - $return = []; - foreach ($this->locale() as $key => $value) { - if (isset($constants[$key]) === true) { - // the key is a valid constant, - // replace it with its string representation - $return[$constants[$key]] = $value; - } else { - // not found, keep it as-is - $return[$key] = $value; - } - } - - return $return; - } - /** * Returns the human-readable name * of the language @@ -454,19 +437,7 @@ class Language extends Model public function rules(): array { $code = $this->locale(LC_CTYPE); - $code = Str::contains($code, '.') ? Str::before($code, '.') : $code; - $file = $this->kirby()->root('i18n:rules') . '/' . $code . '.json'; - - if (F::exists($file) === false) { - $file = $this->kirby()->root('i18n:rules') . '/' . Str::before($code, '_') . '.json'; - } - - try { - $data = Data::read($file); - } catch (\Exception $e) { - $data = []; - } - + $data = static::loadRules($code); return array_merge($data, $this->slugs()); } @@ -488,7 +459,7 @@ class Language extends Model 'code' => $this->code(), 'default' => $this->isDefault(), 'direction' => $this->direction(), - 'locale' => $this->localeExport(), + 'locale' => Locale::export($this->locale()), 'name' => $this->name(), 'translations' => $this->translations(), 'url' => $this->url, @@ -539,24 +510,10 @@ class Language extends Model */ protected function setLocale($locale = null) { - if (is_array($locale)) { - // replace string constant keys with the constant values - $convertedLocale = []; - foreach ($locale as $key => $value) { - if (is_string($key) === true && Str::startsWith($key, 'LC_') === true) { - $key = constant($key); - } - - $convertedLocale[$key] = $value; - } - - $this->locale = $convertedLocale; - } elseif (is_string($locale)) { - $this->locale = [LC_ALL => $locale]; - } elseif ($locale === null) { + if ($locale === null) { $this->locale = [LC_ALL => $this->code]; } else { - throw new InvalidArgumentException('Locale must be string or array'); + $this->locale = Locale::normalize($locale); } return $this; diff --git a/kirby/src/Cms/LanguageRoutes.php b/kirby/src/Cms/LanguageRoutes.php index c4d418c..0afe6a8 100755 --- a/kirby/src/Cms/LanguageRoutes.php +++ b/kirby/src/Cms/LanguageRoutes.php @@ -116,7 +116,7 @@ class LanguageRoutes 'action' => function () use ($kirby) { // find all languages with the same base url as the current installation - $languages = $kirby->languages()->filterBy('baseurl', $kirby->url()); + $languages = $kirby->languages()->filter('baseurl', $kirby->url()); // if there's no language with a matching base url, // redirect to the default language diff --git a/kirby/src/Cms/Languages.php b/kirby/src/Cms/Languages.php index f27349b..2ed31f4 100755 --- a/kirby/src/Cms/Languages.php +++ b/kirby/src/Cms/Languages.php @@ -72,18 +72,6 @@ class Languages extends Collection } } - /** - * @deprecated 3.0.0 Use `Languages::default()` instead - * @return \Kirby\Cms\Language|null - * @codeCoverageIgnore - */ - public function findDefault() - { - deprecated('$languages->findDefault() is deprecated, use $languages->default() instead. $languages->findDefault() will be removed in Kirby 3.5.0.'); - - return $this->default(); - } - /** * Convert all defined languages to a collection * diff --git a/kirby/src/Cms/Layout.php b/kirby/src/Cms/Layout.php new file mode 100755 index 0000000..d8ab42b --- /dev/null +++ b/kirby/src/Cms/Layout.php @@ -0,0 +1,92 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier GmbH + * @license https://getkirby.com/license + */ +class Layout extends Item +{ + const ITEMS_CLASS = '\Kirby\Cms\Layouts'; + + /** + * @var \Kirby\Cms\Content + */ + protected $attrs; + + /** + * @var \Kirby\Cms\LayoutColumns + */ + protected $columns; + + /** + * Proxy for attrs + * + * @param string $method + * @param array $args + * @return \Kirby\Cms\Field + */ + public function __call(string $method, array $args = []) + { + return $this->attrs()->get($method); + } + + /** + * Creates a new Layout object + * + * @param array $params + */ + public function __construct(array $params = []) + { + parent::__construct($params); + + $this->columns = LayoutColumns::factory($params['columns'] ?? [], [ + 'parent' => $this->parent + ]); + + // create the attrs object + $this->attrs = new Content($params['attrs'] ?? [], $this->parent); + } + + /** + * Returns the attrs object + * + * @return \Kirby\Cms\Content + */ + public function attrs() + { + return $this->attrs; + } + + /** + * Returns the columns in this layout + * + * @return \Kirby\Cms\LayoutColumns + */ + public function columns() + { + return $this->columns; + } + + /** + * The result is being sent to the editor + * via the API in the panel + * + * @return array + */ + public function toArray(): array + { + return [ + 'attrs' => $this->attrs()->toArray(), + 'columns' => $this->columns()->toArray(), + 'id' => $this->id(), + ]; + } +} diff --git a/kirby/src/Cms/LayoutColumn.php b/kirby/src/Cms/LayoutColumn.php new file mode 100755 index 0000000..7ceee84 --- /dev/null +++ b/kirby/src/Cms/LayoutColumn.php @@ -0,0 +1,96 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier GmbH + * @license https://getkirby.com/license + */ +class LayoutColumn extends Item +{ + const ITEMS_CLASS = '\Kirby\Cms\LayoutColumns'; + + /** + * @var \Kirby\Cms\Blocks + */ + protected $blocks; + + /** + * @var string + */ + protected $width; + + /** + * Creates a new LayoutColumn object + * + * @param array $params + */ + public function __construct(array $params = []) + { + parent::__construct($params); + + $this->blocks = Blocks::factory($params['blocks'] ?? [], [ + 'parent' => $this->parent + ]); + + $this->width = $params['width'] ?? '1/1'; + } + + /** + * Returns the blocks collection + * + * @return \Kirby\Cms\Blocks + */ + public function blocks() + { + return $this->blocks; + } + + /** + * Returns the number of columns this column spans + * + * @param int $columns + * @return int + */ + public function span(int $columns = 12): int + { + $fraction = Str::split($this->width, '/'); + $a = $fraction[0] ?? 1; + $b = $fraction[1] ?? 1; + + return $columns * $a / $b; + } + + /** + * The result is being sent to the editor + * via the API in the panel + * + * @return array + */ + public function toArray(): array + { + return [ + 'blocks' => $this->blocks()->toArray(), + 'id' => $this->id(), + 'width' => $this->width(), + ]; + } + + /** + * Returns the width of the column + * + * @return string + */ + public function width(): string + { + return $this->width; + } +} diff --git a/kirby/src/Cms/LayoutColumns.php b/kirby/src/Cms/LayoutColumns.php new file mode 100755 index 0000000..df3b29a --- /dev/null +++ b/kirby/src/Cms/LayoutColumns.php @@ -0,0 +1,17 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier GmbH + * @license https://getkirby.com/license + */ +class LayoutColumns extends Items +{ + const ITEM_CLASS = '\Kirby\Cms\LayoutColumn'; +} diff --git a/kirby/src/Cms/Layouts.php b/kirby/src/Cms/Layouts.php new file mode 100755 index 0000000..4d39f13 --- /dev/null +++ b/kirby/src/Cms/Layouts.php @@ -0,0 +1,39 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier GmbH + * @license https://getkirby.com/license + */ +class Layouts extends Items +{ + const ITEM_CLASS = '\Kirby\Cms\Layout'; + + public static function factory(array $layouts = null, array $options = []) + { + $first = $layouts[0] ?? []; + + // if there are no wrapping layouts for blocks yet … + if (array_key_exists('content', $first) === true || array_key_exists('type', $first) === true) { + $layouts = [ + [ + 'id' => uuid(), + 'columns' => [ + [ + 'width' => '1/1', + 'blocks' => $layouts + ] + ] + ] + ]; + } + + return parent::factory($layouts, $options); + } +} diff --git a/kirby/src/Cms/ModelWithContent.php b/kirby/src/Cms/ModelWithContent.php index 3b338aa..33fbe01 100755 --- a/kirby/src/Cms/ModelWithContent.php +++ b/kirby/src/Cms/ModelWithContent.php @@ -294,9 +294,7 @@ abstract class ModelWithContent extends Model $errors = []; foreach ($this->blueprint()->sections() as $section) { - if (method_exists($section, 'errors') === true || isset($section->errors)) { - $errors = array_merge($errors, $section->errors()); - } + $errors = array_merge($errors, $section->errors()); } return $errors; diff --git a/kirby/src/Cms/Page.php b/kirby/src/Cms/Page.php index bfc1888..c4bc901 100755 --- a/kirby/src/Cms/Page.php +++ b/kirby/src/Cms/Page.php @@ -753,18 +753,6 @@ class Page extends ModelWithContent return $this->isHomePage() === true || $this->isErrorPage() === true; } - /** - * @deprecated 3.0.0 Use `Page::isUnlisted()` instead - * @return bool - * @codeCoverageIgnore - */ - public function isInvisible(): bool - { - deprecated('$page->isInvisible() is deprecated, use $page->isUnlisted() instead. $page->isInvisible() will be removed in Kirby 3.5.0.'); - - return $this->isUnlisted(); - } - /** * Checks if the page has a sorting number * @@ -845,18 +833,6 @@ class Page extends ModelWithContent return $this->isListed() === false; } - /** - * @deprecated 3.0.0 Use `Page::isListed()` instead - * @return bool - * @codeCoverageIgnore - */ - public function isVisible(): bool - { - deprecated('$page->isVisible() is deprecated, use $page->isListed() instead. $page->isVisible() will be removed in Kirby 3.5.0.'); - - return $this->isListed(); - } - /** * Checks if the page access is verified. * This is only used for drafts so far. diff --git a/kirby/src/Cms/PageActions.php b/kirby/src/Cms/PageActions.php index ccaec93..dd9174e 100755 --- a/kirby/src/Cms/PageActions.php +++ b/kirby/src/Cms/PageActions.php @@ -23,9 +23,11 @@ use Kirby\Toolkit\Str; trait PageActions { /** - * Changes the sorting number + * Changes the sorting number. * The sorting number must already be correct - * when the method is called + * when the method is called. + * This only affects this page, + * siblings will not be resorted. * * @param int|null $num * @return self @@ -168,7 +170,9 @@ trait PageActions /** * Change the status of the current page - * to either draft, listed or unlisted + * to either draft, listed or unlisted. + * If changing to `listed`, you can pass a position for the + * page in the siblings collection. Siblings will be resorted. * * @param string $status "draft", "listed" or "unlisted" * @param int|null $position Optional sorting number @@ -203,7 +207,7 @@ trait PageActions } /** - * @param int $position + * @param int|null $position * @return self */ protected function changeStatusToListed(int $position = null) @@ -247,6 +251,19 @@ trait PageActions return $page; } + /** + * Change the position of the page in its siblings + * collection. Siblings will be resorted. If the page + * status isn't yet `listed`, it will be changed to it. + * + * @param int|null $position + * @return self + */ + public function changeSort(int $position = null) + { + return $this->changeStatus('listed', $position); + } + /** * Changes the page template * @@ -545,7 +562,7 @@ trait PageActions return $num; default: // get instance with default language - $app = $this->kirby()->clone(); + $app = $this->kirby()->clone([], false); $app->setCurrentLanguage(); $template = Str::template($mode, [ @@ -735,7 +752,7 @@ trait PageActions } $parent = $this->parentModel(); - $parent->children = $parent->children()->sortBy('num', 'asc'); + $parent->children = $parent->children()->sort('num', 'asc'); return true; } @@ -761,18 +778,22 @@ trait PageActions $sibling->changeNum($index); } - $parent->children = $siblings->sortBy('num', 'asc'); + $parent->children = $siblings->sort('num', 'asc'); } return true; } /** + * @deprecated 3.5.0 Use `Page::changeSort()` instead + * * @param null $position * @return self */ public function sort($position = null) { + deprecated('$page->sort() is deprecated, use $page->changeSort() instead. $page->sort() will be removed in Kirby 3.6.0.'); + return $this->changeStatus('listed', $position); } diff --git a/kirby/src/Cms/PagePicker.php b/kirby/src/Cms/PagePicker.php index 40ece5f..375bff8 100755 --- a/kirby/src/Cms/PagePicker.php +++ b/kirby/src/Cms/PagePicker.php @@ -162,7 +162,7 @@ class PagePicker extends Picker } // filter protected pages - $items = $items->filterBy('isReadable', true); + $items = $items->filter('isReadable', true); // search $items = $this->search($items); diff --git a/kirby/src/Cms/PageSiblings.php b/kirby/src/Cms/PageSiblings.php index f592d10..3d24443 100755 --- a/kirby/src/Cms/PageSiblings.php +++ b/kirby/src/Cms/PageSiblings.php @@ -135,103 +135,6 @@ trait PageSiblings */ public function templateSiblings(bool $self = true) { - return $this->siblings($self)->filterBy('intendedTemplate', $this->intendedTemplate()->name()); - } - - /** - * @deprecated 3.0.0 Use `Page::hasNextUnlisted()` instead - * @return bool - * @codeCoverageIgnore - */ - public function hasNextInvisible(): bool - { - deprecated('$page->hasNextInvisible() is deprecated, use $page->hasNextUnlisted() instead. $page->hasNextInvisible() will be removed in Kirby 3.5.0.'); - - return $this->hasNextUnlisted(); - } - - /** - * @deprecated 3.0.0 Use `Page::hasNextListed()` instead - * @return bool - * @codeCoverageIgnore - */ - public function hasNextVisible(): bool - { - deprecated('$page->hasNextVisible() is deprecated, use $page->hasNextListed() instead. $page->hasNextVisible() will be removed in Kirby 3.5.0.'); - - return $this->hasNextListed(); - } - - /** - * @deprecated 3.0.0 Use `Page::hasPrevUnlisted()` instead - * @return bool - * @codeCoverageIgnore - */ - public function hasPrevInvisible(): bool - { - deprecated('$page->hasPrevInvisible() is deprecated, use $page->hasPrevUnlisted() instead. $page->hasPrevInvisible() will be removed in Kirby 3.5.0.'); - - return $this->hasPrevUnlisted(); - } - - /** - * @deprecated 3.0.0 Use `Page::hasPrevListed()` instead - * @return bool - * @codeCoverageIgnore - */ - public function hasPrevVisible(): bool - { - deprecated('$page->hasPrevVisible() is deprecated, use $page->hasPrevListed() instead. $page->hasPrevVisible() will be removed in Kirby 3.5.0.'); - - return $this->hasPrevListed(); - } - - /** - * @deprecated 3.0.0 Use `Page::nextUnlisted()` instead - * @return self|null - * @codeCoverageIgnore - */ - public function nextInvisible() - { - deprecated('$page->nextInvisible() is deprecated, use $page->nextUnlisted() instead. $page->nextInvisible() will be removed in Kirby 3.5.0.'); - - return $this->nextUnlisted(); - } - - - /** - * @deprecated 3.0.0 Use `Page::nextListed()` instead - * @return self|null - * @codeCoverageIgnore - */ - public function nextVisible() - { - deprecated('$page->nextVisible() is deprecated, use $page->nextListed() instead. $page->nextVisible() will be removed in Kirby 3.5.0.'); - - return $this->nextListed(); - } - - /** - * @deprecated 3.0.0 Use `Page::prevUnlisted()` instead - * @return self|null - * @codeCoverageIgnore - */ - public function prevInvisible() - { - deprecated('$page->prevInvisible() is deprecated, use $page->prevUnlisted() instead. $page->prevInvisible() will be removed in Kirby 3.5.0.'); - - return $this->prevUnlisted(); - } - - /** - * @deprecated 3.0.0 Use `Page::prevListed()` instead - * @return self|null - * @codeCoverageIgnore - */ - public function prevVisible() - { - deprecated('$page->prevVisible() is deprecated, use $page->prevListed() instead. $page->prevVisible() will be removed in Kirby 3.5.0.'); - - return $this->prevListed(); + return $this->siblings($self)->filter('intendedTemplate', $this->intendedTemplate()->name()); } } diff --git a/kirby/src/Cms/Pages.php b/kirby/src/Cms/Pages.php index 30fb10e..4240c5f 100755 --- a/kirby/src/Cms/Pages.php +++ b/kirby/src/Cms/Pages.php @@ -74,7 +74,7 @@ class Pages extends Collection */ public function audio() { - return $this->files()->filterBy('type', 'audio'); + return $this->files()->filter('type', 'audio'); } /** @@ -102,7 +102,7 @@ class Pages extends Collection */ public function code() { - return $this->files()->filterBy('type', 'code'); + return $this->files()->filter('type', 'code'); } /** @@ -112,7 +112,7 @@ class Pages extends Collection */ public function documents() { - return $this->files()->filterBy('type', 'document'); + return $this->files()->filter('type', 'document'); } /** @@ -319,7 +319,7 @@ class Pages extends Collection */ public function images() { - return $this->files()->filterBy('type', 'image'); + return $this->files()->filter('type', 'image'); } /** @@ -351,19 +351,6 @@ class Pages extends Collection return $this->index; } - /** - * @deprecated 3.0.0 Use `Pages::unlisted()` instead - * - * @return self - * @codeCoverageIgnore - */ - public function invisible() - { - deprecated('$pages->invisible() is deprecated, use $pages->unlisted() instead. $pages->invisible() will be removed in Kirby 3.5.0.'); - - return $this->unlisted(); - } - /** * Returns all listed pages in the collection * @@ -371,7 +358,7 @@ class Pages extends Collection */ public function listed() { - return $this->filterBy('isListed', '==', true); + return $this->filter('isListed', '==', true); } /** @@ -381,7 +368,7 @@ class Pages extends Collection */ public function unlisted() { - return $this->filterBy('isUnlisted', '==', true); + return $this->filter('isUnlisted', '==', true); } /** @@ -478,7 +465,7 @@ class Pages extends Collection */ public function published() { - return $this->filterBy('isDraft', '==', false); + return $this->filter('isDraft', '==', false); } /** @@ -509,19 +496,6 @@ class Pages extends Collection */ public function videos() { - return $this->files()->filterBy('type', 'video'); - } - - /** - * @deprecated 3.0.0 Use `Pages::listed()` instead - * - * @return \Kirby\Cms\Pages - * @codeCoverageIgnore - */ - public function visible() - { - deprecated('$pages->visible() is deprecated, use $pages->listed() instead. $pages->visible() will be removed in Kirby 3.5.0.'); - - return $this->listed(); + return $this->files()->filter('type', 'video'); } } diff --git a/kirby/src/Cms/Plugin.php b/kirby/src/Cms/Plugin.php index e60ddae..1193ce0 100755 --- a/kirby/src/Cms/Plugin.php +++ b/kirby/src/Cms/Plugin.php @@ -140,7 +140,7 @@ class Plugin extends Model */ protected function setName(string $name) { - if (preg_match('!^[a-z0-9-]+\/[a-z0-9-]+$!i', $name) == false) { + if (preg_match('!^[a-z0-9-]+\/[a-z0-9-]+$!i', $name) !== 1) { throw new InvalidArgumentException('The plugin name must follow the format "a-z0-9-/a-z0-9-"'); } diff --git a/kirby/src/Cms/Roles.php b/kirby/src/Cms/Roles.php index de9a08e..71ebef0 100755 --- a/kirby/src/Cms/Roles.php +++ b/kirby/src/Cms/Roles.php @@ -87,7 +87,7 @@ class Roles extends Collection } // return the collection sorted by name - return $collection->sortBy('name', 'asc'); + return $collection->sort('name', 'asc'); } /** @@ -134,6 +134,6 @@ class Roles extends Collection } // return the collection sorted by name - return $roles->sortBy('name', 'asc'); + return $roles->sort('name', 'asc'); } } diff --git a/kirby/src/Cms/Section.php b/kirby/src/Cms/Section.php index a8d62e7..b50c32e 100755 --- a/kirby/src/Cms/Section.php +++ b/kirby/src/Cms/Section.php @@ -51,6 +51,15 @@ class Section extends Component parent::__construct($type, $attrs); } + public function errors(): array + { + if (array_key_exists('errors', $this->methods) === true) { + return $this->methods['errors']->call($this); + } + + return $this->errors ?? []; + } + /** * @return \Kirby\Cms\App */ diff --git a/kirby/src/Cms/System.php b/kirby/src/Cms/System.php index 70f6779..0d8d38a 100755 --- a/kirby/src/Cms/System.php +++ b/kirby/src/Cms/System.php @@ -340,6 +340,68 @@ class System } } + /** + * Returns the configured UI modes for the login form + * with their respective options + * + * @return array + * + * @throws \Kirby\Exception\InvalidArgumentException If the configuration is invalid + * (only in debug mode) + */ + public function loginMethods(): array + { + $default = ['password' => []]; + $methods = A::wrap($this->app->option('auth.methods', $default)); + + // normalize the syntax variants + $normalized = []; + $uses2fa = false; + foreach ($methods as $key => $value) { + if (is_int($key) === true) { + // ['password'] + $normalized[$value] = []; + } elseif ($value === true) { + // ['password' => true] + $normalized[$key] = []; + } else { + // ['password' => [...]] + $normalized[$key] = $value; + + if (isset($value['2fa']) === true && $value['2fa'] === true) { + $uses2fa = true; + } + } + } + + // 2FA must not be circumvented by code-based modes + foreach (['code', 'password-reset'] as $method) { + if ($uses2fa === true && isset($normalized[$method]) === true) { + unset($normalized[$method]); + + if ($this->app->option('debug') === true) { + $message = 'The "' . $method . '" login method cannot be enabled when 2FA is required'; + throw new InvalidArgumentException($message); + } + } + } + + // only one code-based mode can be active at once + if ( + isset($normalized['code']) === true && + isset($normalized['password-reset']) === true + ) { + unset($normalized['code']); + + if ($this->app->option('debug') === true) { + $message = 'The "code" and "password-reset" login methods cannot be enabled together'; + throw new InvalidArgumentException($message); + } + } + + return $normalized; + } + /** * Check for an existing mbstring extension * @@ -367,7 +429,9 @@ class System */ public function php(): bool { - return version_compare(phpversion(), '7.1.0', '>='); + return + version_compare(PHP_VERSION, '7.3.0', '>=') === true && + version_compare(PHP_VERSION, '8.1.0', '<') === true; } /** diff --git a/kirby/src/Cms/User.php b/kirby/src/Cms/User.php index 33ef672..1ff3dbe 100755 --- a/kirby/src/Cms/User.php +++ b/kirby/src/Cms/User.php @@ -368,7 +368,8 @@ class User extends ModelWithContent */ public function isLastAdmin(): bool { - return $this->role()->isAdmin() === true && $this->kirby()->users()->filterBy('role', 'admin')->count() <= 1; + return $this->role()->isAdmin() === true && + $this->kirby()->users()->filter('role', 'admin')->count() <= 1; } /** @@ -381,6 +382,17 @@ class User extends ModelWithContent return $this->kirby()->users()->count() === 1; } + /** + * Checks if the current user is the virtual + * Nobody user + * + * @return bool + */ + public function isNobody(): bool + { + return $this->email() === 'nobody@getkirby.com'; + } + /** * Returns the user language * @@ -421,7 +433,7 @@ class User extends ModelWithContent $kirby->trigger('user.login:before', ['user' => $this, 'session' => $session]); $session->regenerateToken(); // privilege change - $session->data()->set('user.id', $this->id()); + $session->data()->set('kirby.userId', $this->id()); $this->kirby()->auth()->setUser($this); $kirby->trigger('user.login:after', ['user' => $this, 'session' => $session]); @@ -441,7 +453,7 @@ class User extends ModelWithContent $kirby->trigger('user.logout:before', ['user' => $this, 'session' => $session]); // remove the user from the session for future requests - $session->data()->remove('user.id'); + $session->data()->remove('kirby.userId'); // clear the cached user object from the app state of the current request $this->kirby()->auth()->flush(); @@ -538,6 +550,18 @@ class User extends ModelWithContent return $this->name = new Field($this, 'name', $this->credentials()['name'] ?? null); } + /** + * Returns the user's name or, + * if empty, the email address + * + * @return \Kirby\Cms\Field + */ + public function nameOrEmail() + { + $name = $this->name(); + return $name->isNotEmpty() ? $name : new Field($this, 'email', $this->email()); + } + /** * Create a dummy nobody * @@ -688,7 +712,7 @@ class User extends ModelWithContent $roles = $kirby->roles(); // a collection with just the one role of the user - $myRole = $roles->filterBy('id', $this->role()->id()); + $myRole = $roles->filter('id', $this->role()->id()); // if there's an authenticated user … if ($user = $kirby->user()) { diff --git a/kirby/src/Cms/UserActions.php b/kirby/src/Cms/UserActions.php index 534ac5e..6972093 100755 --- a/kirby/src/Cms/UserActions.php +++ b/kirby/src/Cms/UserActions.php @@ -140,7 +140,7 @@ trait UserActions * @return mixed * @throws \Kirby\Exception\PermissionException */ - protected function commit(string $action, array $arguments = [], Closure $callback) + protected function commit(string $action, array $arguments, Closure $callback) { if ($this->isKirby() === true) { throw new PermissionException('The Kirby user cannot be changed'); diff --git a/kirby/src/Cms/UserPermissions.php b/kirby/src/Cms/UserPermissions.php index e26ff9c..35c706a 100755 --- a/kirby/src/Cms/UserPermissions.php +++ b/kirby/src/Cms/UserPermissions.php @@ -50,7 +50,7 @@ class UserPermissions extends ModelPermissions } // users who are not admins cannot create admins - if ($this->model->isAdmin() === false) { + if ($this->model->isAdmin() === true) { return false; } diff --git a/kirby/src/Cms/UserPicker.php b/kirby/src/Cms/UserPicker.php index a23799a..fb796f0 100755 --- a/kirby/src/Cms/UserPicker.php +++ b/kirby/src/Cms/UserPicker.php @@ -61,7 +61,7 @@ class UserPicker extends Picker $users = $this->search($users); // sort - $users = $users->sortBy('username', 'asc'); + $users = $users->sort('username', 'asc'); // paginate return $this->paginate($users); diff --git a/kirby/src/Cms/UserRules.php b/kirby/src/Cms/UserRules.php index 2e262cf..f2f93b5 100755 --- a/kirby/src/Cms/UserRules.php +++ b/kirby/src/Cms/UserRules.php @@ -165,6 +165,12 @@ class UserRules static::validEmail($user, $user->email(), true); static::validLanguage($user, $user->language()); + // the first user must have a password + if ($user->kirby()->users()->count() === 0 && empty($props['password'])) { + // trigger invalid password error + static::validPassword($user, ' '); + } + if (empty($props['password']) === false) { static::validPassword($user, $props['password']); } diff --git a/kirby/src/Cms/Users.php b/kirby/src/Cms/Users.php index 56c0099..a6a271c 100755 --- a/kirby/src/Cms/Users.php +++ b/kirby/src/Cms/Users.php @@ -128,13 +128,13 @@ class Users extends Collection } /** - * Shortcut for `$users->filterBy('role', 'admin')` + * Shortcut for `$users->filter('role', 'admin')` * * @param string $role * @return self */ public function role(string $role) { - return $this->filterBy('role', $role); + return $this->filter('role', $role); } } diff --git a/kirby/src/Data/Data.php b/kirby/src/Data/Data.php index 07a4807..def29ac 100755 --- a/kirby/src/Data/Data.php +++ b/kirby/src/Data/Data.php @@ -79,7 +79,7 @@ class Data * @param string $type * @return array */ - public static function decode($string = null, string $type): array + public static function decode($string, string $type): array { return static::handler($type)->decode($string); } @@ -91,7 +91,7 @@ class Data * @param string $type * @return string */ - public static function encode($data = null, string $type): string + public static function encode($data, string $type): string { return static::handler($type)->encode($data); } diff --git a/kirby/src/Data/Yaml.php b/kirby/src/Data/Yaml.php index 163b968..df6956a 100755 --- a/kirby/src/Data/Yaml.php +++ b/kirby/src/Data/Yaml.php @@ -24,6 +24,9 @@ class Yaml extends Handler */ public static function encode($data): string { + // TODO: The locale magic should no longer be + // necessary when support for PHP 7.x is dropped + // fetch the current locale setting for numbers $locale = setlocale(LC_NUMERIC, 0); diff --git a/kirby/src/Database/Sql.php b/kirby/src/Database/Sql.php index 2c4236a..2738cfd 100755 --- a/kirby/src/Database/Sql.php +++ b/kirby/src/Database/Sql.php @@ -363,7 +363,7 @@ abstract class Sql * @param array $input * @return void */ - public function extend(&$query, array &$bindings = [], $input) + public function extend(&$query, array &$bindings, $input) { if (empty($input['query']) === false) { $query[] = $input['query']; diff --git a/kirby/src/Email/Email.php b/kirby/src/Email/Email.php index 1680369..9a6afe2 100755 --- a/kirby/src/Email/Email.php +++ b/kirby/src/Email/Email.php @@ -21,6 +21,22 @@ class Email { use Properties; + /** + * If set to `true`, the debug mode is enabled + * for all emails + * + * @var bool + */ + public static $debug = false; + + /** + * Store for sent emails when `Email::$debug` + * is set to `true` + * + * @var array + */ + public static $emails = []; + /** * @var array|null */ @@ -96,9 +112,13 @@ class Email { $this->setProperties($props); - if ($debug === false) { - $this->send(); // @codeCoverageIgnore + // @codeCoverageIgnoreStart + if (static::$debug === false && $debug === false) { + $this->send(); + } elseif (static::$debug === true) { + static::$emails[] = $this; } + // @codeCoverageIgnoreEnd } /** diff --git a/kirby/src/Form/Field.php b/kirby/src/Form/Field.php index a2dd56b..6878d6b 100755 --- a/kirby/src/Form/Field.php +++ b/kirby/src/Form/Field.php @@ -248,6 +248,26 @@ class Field extends Component ]; } + /** + * Creates a new field instance + * + * @param string $type + * @param array $attrs + * @param Fields|null $formFields + * @return static + */ + public static function factory(string $type, array $attrs = [], ?Fields $formFields = null) + { + $field = static::$types[$type] ?? null; + + if (is_string($field) && class_exists($field) === true) { + $attrs['siblings'] = $formFields; + return new $field($attrs); + } + + return new static($type, $attrs, $formFields); + } + /** * Parent collection with all fields of the current form * @@ -404,8 +424,6 @@ class Field extends Component unset($array['model']); - $array['errors'] = $this->errors(); - $array['invalid'] = $this->isInvalid(); $array['saveable'] = $this->save(); $array['signature'] = md5(json_encode($array)); diff --git a/kirby/src/Form/Field/BlocksField.php b/kirby/src/Form/Field/BlocksField.php new file mode 100755 index 0000000..af45d87 --- /dev/null +++ b/kirby/src/Form/Field/BlocksField.php @@ -0,0 +1,265 @@ +setFieldsets($params['fieldsets'] ?? null, $params['model'] ?? site()); + + parent::__construct($params); + + $this->setEmpty($params['empty'] ?? null); + $this->setGroup($params['group'] ?? 'blocks'); + $this->setMax($params['max'] ?? null); + $this->setMin($params['min'] ?? null); + $this->setPretty($params['pretty'] ?? false); + } + + public function blocksToValues($blocks, $to = 'values'): array + { + $result = []; + $fields = []; + + foreach ($blocks as $block) { + try { + $type = $block['type']; + + // get and cache fields at the same time + $fields[$type] = $fields[$type] ?? $this->fields($block['type']); + + // overwrite the block content with form values + $block['content'] = $this->form($fields[$type], $block['content'])->$to(); + + $result[] = $block; + } catch (Throwable $e) { + $result[] = $block; + + // skip invalid blocks + continue; + } + } + + return $result; + } + + public function fields(string $type) + { + return $this->fieldset($type)->fields(); + } + + public function fieldset(string $type) + { + if ($fieldset = $this->fieldsets->find($type)) { + return $fieldset; + } + + throw new NotFoundException('The fieldset ' . $type . ' could not be found'); + } + + public function fieldsets() + { + return $this->fieldsets; + } + + public function fieldsetGroups(): ?array + { + $fieldsetGroups = $this->fieldsets()->groups(); + return empty($fieldsetGroups) === true ? null : $fieldsetGroups; + } + + public function fill($value = null) + { + $value = BlocksCollection::parse($value); + $blocks = BlocksCollection::factory($value); + $this->value = $this->blocksToValues($blocks->toArray()); + } + + public function form(array $fields, array $input = []) + { + return new Form([ + 'fields' => $fields, + 'model' => $this->model, + 'strict' => true, + 'values' => $input, + ]); + } + + public function isEmpty(): bool + { + return count($this->value()) === 0; + } + + public function group(): string + { + return $this->group; + } + + public function pretty(): bool + { + return $this->pretty; + } + + public function props(): array + { + return [ + 'empty' => $this->empty(), + 'fieldsets' => $this->fieldsets()->toArray(), + 'fieldsetGroups' => $this->fieldsetGroups(), + 'group' => $this->group(), + 'max' => $this->max(), + 'min' => $this->min(), + ] + parent::props(); + } + + public function routes(): array + { + $field = $this; + + return [ + [ + 'pattern' => 'uuid', + 'action' => function () { + return ['uuid' => uuid()]; + } + ], + [ + 'pattern' => 'fieldsets/(:any)', + 'method' => 'GET', + 'action' => function ($fieldsetType) use ($field) { + $fields = $field->fields($fieldsetType); + $defaults = $field->form($fields, [])->data(true); + $content = $field->form($fields, $defaults)->values(); + + return Block::factory([ + 'content' => $content, + 'type' => $fieldsetType + ])->toArray(); + } + ], + [ + 'pattern' => 'fieldsets/(:any)/fields/(:any)/(:all?)', + 'method' => 'ALL', + 'action' => function (string $fieldsetType, string $fieldName, string $path = null) use ($field) { + $fields = $field->fields($fieldsetType); + $field = $field->form($fields)->field($fieldName); + + $fieldApi = $this->clone([ + 'routes' => $field->api(), + 'data' => array_merge($this->data(), ['field' => $field]) + ]); + + return $fieldApi->call($path, $this->requestMethod(), $this->requestData()); + } + ], + ]; + } + + public function store($value) + { + $blocks = $this->blocksToValues((array)$value, 'content'); + return $this->valueToJson($blocks, $this->pretty()); + } + + protected function setFieldsets($fieldsets, $model) + { + if (is_string($fieldsets) === true) { + $fieldsets = []; + } + + $this->fieldsets = Fieldsets::factory($fieldsets, [ + 'parent' => $model + ]); + } + + protected function setGroup(string $group = null) + { + $this->group = $group; + } + + protected function setPretty(bool $pretty = false) + { + $this->pretty = $pretty; + } + + public function validations(): array + { + return [ + 'blocks' => function ($value) { + if ($this->min && count($value) < $this->min) { + throw new InvalidArgumentException([ + 'key' => 'blocks.min.' . ($this->min === 1 ? 'singular' : 'plural'), + 'data' => [ + 'min' => $this->min + ] + ]); + } + + if ($this->max && count($value) > $this->max) { + throw new InvalidArgumentException([ + 'key' => 'blocks.max.' . ($this->max === 1 ? 'singular' : 'plural'), + 'data' => [ + 'max' => $this->max + ] + ]); + } + + $fields = []; + $index = 0; + + foreach ($value as $block) { + $index++; + $blockType = $block['type']; + + try { + $blockFields = $fields[$blockType] ?? $this->fields($blockType) ?? []; + } catch (Throwable $e) { + // skip invalid blocks + continue; + } + + // store the fields for the next round + $fields[$blockType] = $blockFields; + + // overwrite the content with the serialized form + foreach ($this->form($blockFields, $block['content'])->fields() as $field) { + $errors = $field->errors(); + + // rough first validation + if (empty($errors) === false) { + throw new InvalidArgumentException([ + 'key' => 'blocks.validation', + 'data' => [ + 'index' => $index, + ] + ]); + } + } + } + + return true; + } + ]; + } +} diff --git a/kirby/src/Form/Field/LayoutField.php b/kirby/src/Form/Field/LayoutField.php new file mode 100755 index 0000000..79b368a --- /dev/null +++ b/kirby/src/Form/Field/LayoutField.php @@ -0,0 +1,224 @@ +setModel($params['model'] ?? site()); + $this->setLayouts($params['layouts'] ?? ['1/1']); + $this->setSettings($params['settings'] ?? []); + + parent::__construct($params); + } + + public function fill($value = null) + { + $value = $this->valueFromJson($value); + $layouts = Layouts::factory($value, ['parent' => $this->model])->toArray(); + + foreach ($layouts as $layoutIndex => $layout) { + if ($this->settings !== null) { + $layouts[$layoutIndex]['attrs'] = $this->attrsForm($layout['attrs'])->values(); + } + + foreach ($layout['columns'] as $columnIndex => $column) { + $layouts[$layoutIndex]['columns'][$columnIndex]['blocks'] = $this->blocksToValues($column['blocks']); + } + } + + $this->value = $layouts; + } + + public function attrsForm(array $input = []) + { + $settings = $this->settings(); + + return new Form([ + 'fields' => $settings ? $settings->fields() : [], + 'model' => $this->model, + 'strict' => true, + 'values' => $input, + ]); + } + + public function layouts(): ?array + { + return $this->layouts; + } + + public function props(): array + { + $settings = $this->settings(); + + return array_merge(parent::props(), [ + 'settings' => $settings !== null ? $settings->toArray() : null, + 'layouts' => $this->layouts() + ]); + } + + public function routes(): array + { + $field = $this; + $routes = parent::routes(); + $routes[] = [ + 'pattern' => 'layout', + 'method' => 'POST', + 'action' => function () use ($field) { + $defaults = $field->attrsForm([])->data(true); + $attrs = $field->attrsForm($defaults)->values(); + $columns = get('columns') ?? ['1/1']; + + return Layout::factory([ + 'attrs' => $attrs, + 'columns' => array_map(function ($width) { + return [ + 'blocks' => [], + 'id' => uuid(), + 'width' => $width, + ]; + }, $columns) + ])->toArray(); + }, + ]; + + $routes[] = [ + 'pattern' => 'fields/(:any)/(:all?)', + 'method' => 'ALL', + 'action' => function (string $fieldName, string $path = null) use ($field) { + $form = $field->attrsForm(); + $field = $form->field($fieldName); + + $fieldApi = $this->clone([ + 'routes' => $field->api(), + 'data' => array_merge($this->data(), ['field' => $field]) + ]); + + return $fieldApi->call($path, $this->requestMethod(), $this->requestData()); + } + ]; + + return $routes; + } + + protected function setLayouts(array $layouts = []) + { + $this->layouts = array_map(function ($layout) { + return Str::split($layout); + }, $layouts); + } + + protected function setSettings(array $settings = []) + { + if (empty($settings) === true) { + $this->settings = null; + return; + } + + $settings['icon'] = 'dashboard'; + $settings['type'] = 'layout'; + $settings['parent'] = $this->model(); + + $this->settings = Fieldset::factory($settings); + } + + public function settings() + { + return $this->settings; + } + + public function store($value) + { + $value = Layouts::factory($value, ['parent' => $this->model])->toArray(); + + foreach ($value as $layoutIndex => $layout) { + if ($this->settings !== null) { + $value[$layoutIndex]['attrs'] = $this->attrsForm($layout['attrs'])->content(); + } + + foreach ($layout['columns'] as $columnIndex => $column) { + $value[$layoutIndex]['columns'][$columnIndex]['blocks'] = $this->blocksToValues($column['blocks'] ?? [], 'content'); + } + } + + return $this->valueToJson($value, $this->pretty()); + } + + public function validations(): array + { + return [ + 'layout' => function ($value) { + $fields = []; + $layoutIndex = 0; + + foreach ($value as $layout) { + $layoutIndex++; + + // validate settings form + foreach ($this->attrsForm($layout['attrs'] ?? [])->fields() as $field) { + $errors = $field->errors(); + + if (empty($errors) === false) { + throw new InvalidArgumentException([ + 'key' => 'layout.validation.settings', + 'data' => [ + 'index' => $layoutIndex + ] + ]); + } + } + + // validate blocks in the layout + $blockIndex = 0; + + foreach ($layout['columns'] ?? [] as $column) { + foreach ($column['blocks'] ?? [] as $block) { + $blockIndex++; + $blockType = $block['type']; + + try { + $blockFields = $fields[$blockType] ?? $this->fields($blockType) ?? []; + } catch (Throwable $e) { + // skip invalid blocks + continue; + } + + // store the fields for the next round + $fields[$blockType] = $blockFields; + + // overwrite the content with the serialized form + foreach ($this->form($blockFields, $block['content'])->fields() as $field) { + $errors = $field->errors(); + + // rough first validation + if (empty($errors) === false) { + throw new InvalidArgumentException([ + 'key' => 'layout.validation.block', + 'data' => [ + 'blockIndex' => $blockIndex, + 'layoutIndex' => $layoutIndex + ] + ]); + } + } + } + } + } + + return true; + } + ]; + } +} diff --git a/kirby/src/Form/FieldClass.php b/kirby/src/Form/FieldClass.php new file mode 100755 index 0000000..4e6f75b --- /dev/null +++ b/kirby/src/Form/FieldClass.php @@ -0,0 +1,627 @@ +$param) === true) { + return $this->$param; + } + + return $this->params[$param] ?? null; + } + + public function __construct(array $params = []) + { + $this->params = $params; + + $this->setAfter($params['after'] ?? null); + $this->setAutofocus($params['autofocus'] ?? false); + $this->setBefore($params['before'] ?? null); + $this->setDefault($params['default'] ?? null); + $this->setDisabled($params['disabled'] ?? false); + $this->setHelp($params['help'] ?? null); + $this->setIcon($params['icon'] ?? null); + $this->setLabel($params['label'] ?? null); + $this->setModel($params['model'] ?? site()); + $this->setName($params['name'] ?? null); + $this->setPlaceholder($params['placeholder'] ?? null); + $this->setRequired($params['required'] ?? false); + $this->setSiblings($params['siblings'] ?? null); + $this->setTranslate($params['translate'] ?? true); + $this->setWhen($params['when'] ?? null); + $this->setWidth($params['width'] ?? null); + + if (array_key_exists('value', $params) === true) { + $this->fill($params['value']); + } + } + + public function after(): ?string + { + return $this->stringTemplate($this->after); + } + + public function api(): array + { + return $this->routes(); + } + + public function autofocus(): bool + { + return $this->autofocus; + } + + public function before(): ?string + { + return $this->stringTemplate($this->before); + } + + /** + * DEPRECATED! + * + * Returns the field data + * in a format to be stored + * in Kirby's content fields + * + * @param bool $default + * @return mixed + */ + public function data(bool $default = false) + { + return $this->store($this->value($default)); + } + + /** + * Returns the default value for the field, + * which will be used when a page/file/user is created + */ + public function default() + { + if ($this->default === null) { + return; + } + + if (is_string($this->default) === false) { + return $this->default; + } + + return $this->stringTemplate($this->default); + } + + /** + * If `true`, the field is no longer editable and will not be saved + */ + public function disabled(): bool + { + return $this->disabled; + } + + /** + * Optional help text below the field + */ + public function help(): ?string + { + if (empty($this->help) === false) { + $help = $this->stringTemplate($this->help); + $help = $this->kirby()->kirbytext($help); + return $help; + } + + return null; + } + + protected function i18n($param) + { + return empty($param) === false ? I18n::translate($param, $param) : null; + } + + /** + * Optional icon that will be shown at the end of the field + */ + public function icon(): ?string + { + return $this->icon; + } + + public function id(): string + { + return $this->name(); + } + + public function isDisabled(): bool + { + return $this->disabled; + } + + public function isEmpty(): bool + { + return $this->isEmptyValue($this->value()); + } + + public function isEmptyValue($value): bool + { + return in_array($value, [null, '', []], true); + } + + /** + * Checks if the field is invalid + * + * @return bool + */ + public function isInvalid(): bool + { + return $this->isValid() === false; + } + + public function isRequired(): bool + { + return $this->required; + } + + public function isSaveable(): bool + { + return true; + } + + /** + * Checks if the field is valid + * + * @return bool + */ + public function isValid(): bool + { + return empty($this->errors()) === true; + } + + /** + * Runs all validations and returns an array of + * error messages + * + * @return array + */ + public function errors(): array + { + return $this->validate(); + } + + /** + * Setter for the value + * + * @param mixed $value + * @return void + */ + public function fill($value = null) + { + $this->value = $value; + } + + /** + * Returns the Kirby instance + * + * @return \Kirby\Cms\App + */ + public function kirby() + { + return $this->model->kirby(); + } + + /** + * The field label can be set as string or associative array with translations + */ + public function label(): string + { + return $this->stringTemplate($this->label ?? Str::ucfirst($this->name())); + } + + /** + * Returns the parent model + * + * @return mixed|null + */ + public function model() + { + return $this->model; + } + + /** + * Returns the field name + * + * @return string + */ + public function name(): string + { + return $this->name ?? $this->type(); + } + + /** + * Checks if the field needs a value before being saved; + * this is the case if all of the following requirements are met: + * - The field is saveable + * - The field is required + * - The field is currently empty + * - The field is not currently inactive because of a `when` rule + * + * @return bool + */ + protected function needsValue(): bool + { + // check simple conditions first + if ( + $this->isSaveable() === false || + $this->isRequired() === false || + $this->isEmpty() === false + ) { + return false; + } + + // check the data of the relevant fields if there is a `when` option + if (empty($this->when) === false && is_array($this->when) === true) { + $formFields = $this->siblings(); + + if ($formFields !== null) { + foreach ($this->when as $field => $value) { + $field = $formFields->get($field); + $inputValue = $field !== null ? $field->value() : ''; + + // if the input data doesn't match the requested `when` value, + // that means that this field is not required and can be saved + // (*all* `when` conditions must be met for this field to be required) + if ($inputValue !== $value) { + return false; + } + } + } + } + + // either there was no `when` condition or all conditions matched + return true; + } + + /** + * Returns all original params for the field + * + * @return array + */ + public function params(): array + { + return $this->params; + } + + /** + * Optional placeholder value that will be shown when the field is empty + */ + public function placeholder(): ?string + { + return $this->stringTemplate($this->placeholder); + } + + /** + * Define the props that will be sent to + * the Vue component + * + * @return array + */ + public function props(): array + { + return [ + 'after' => $this->after(), + 'autofocus' => $this->autofocus(), + 'before' => $this->before(), + 'default' => $this->default(), + 'disabled' => $this->isDisabled(), + 'help' => $this->help(), + 'icon' => $this->icon(), + 'label' => $this->label(), + 'name' => $this->name(), + 'placeholder' => $this->placeholder(), + 'required' => $this->isRequired(), + 'saveable' => $this->isSaveable(), + 'translate' => $this->translate(), + 'type' => $this->type(), + 'width' => $this->width(), + ]; + } + + /** + * If `true`, the field has to be filled in correctly to be saved. + * + * @return bool + */ + public function required(): bool + { + return $this->required; + } + + /** + * Routes for the field API + * + * @return array + */ + public function routes(): array + { + return []; + } + + /** + * DEPRECATED + * + * @return bool + */ + public function save() + { + return $this->isSaveable(); + } + + protected function setAfter($after = null) + { + $this->after = $this->i18n($after); + } + + protected function setAutofocus(bool $autofocus = false) + { + $this->autofocus = $autofocus; + } + + protected function setBefore($before = null) + { + $this->before = $this->i18n($before); + } + + protected function setDefault($default = null) + { + $this->default = $default; + } + + protected function setDisabled(bool $disabled = false) + { + $this->disabled = $disabled; + } + + protected function setHelp($help = null) + { + $this->help = $this->i18n($help); + } + + protected function setIcon(string $icon = null) + { + $this->icon = $icon; + } + + protected function setLabel($label = null) + { + $this->label = $this->i18n($label); + } + + protected function setModel(ModelWithContent $model) + { + $this->model = $model; + } + + protected function setName(string $name = null) + { + $this->name = $name; + } + + protected function setPlaceholder($placeholder = null) + { + $this->placeholder = $this->i18n($placeholder); + } + + protected function setRequired(bool $required = false) + { + $this->required = $required; + } + + protected function setSiblings(Fields $siblings = null) + { + $this->siblings = $siblings ?? new Fields([]); + } + + protected function setTranslate(bool $translate = true) + { + $this->translate = $translate; + } + + protected function setWhen($when = null) + { + $this->when = $when; + } + + protected function setWidth(string $width = null) + { + $this->width = $width; + } + + protected function siblingsCollection() + { + return $this->siblings; + } + + protected function stringTemplate(?string $string = null): ?string + { + if ($string !== null) { + return $this->model->toString($string); + } + + return null; + } + + public function store($value) + { + return $value; + } + + /** + * Should the field be translatable? + * + * @return bool + */ + public function translate(): bool + { + return $this->translate; + } + + /** + * Converts the field to a plain array + * + * @return array + */ + public function toArray(): array + { + $props = $this->props(); + $props['signature'] = md5(json_encode($props)); + + ksort($props); + + return array_filter($props, function ($item) { + return $item !== null; + }); + } + + public function type(): string + { + return lcfirst(basename(str_replace(['\\', 'Field'], ['/', ''], static::class))); + } + + /** + * Runs the validations defined for the field + * + * @return array + */ + protected function validate(): array + { + $validations = $this->validations(); + $value = $this->value(); + $errors = []; + + // validate required values + if ($this->needsValue() === true) { + $errors['required'] = I18n::translate('error.validation.required'); + } + + foreach ($validations as $key => $validation) { + if (is_int($key) === true) { + // predefined validation + try { + Validations::$validation($this, $value); + } catch (Exception $e) { + $errors[$validation] = $e->getMessage(); + } + continue; + } + + if (is_a($validation, 'Closure') === true) { + try { + $validation->call($this, $value); + } catch (Exception $e) { + $errors[$key] = $e->getMessage(); + } + } + } + + return $errors; + } + + /** + * Defines all validation rules + * + * @return array + */ + protected function validations(): array + { + return []; + } + + /** + * Returns the value of the field if saveable + * otherwise it returns null + * + * @return mixed + */ + public function value(bool $default = false) + { + if ($this->isSaveable() === false) { + return null; + } + + if ($default === true && $this->isEmpty() === true) { + return $this->default(); + } + + return $this->value; + } + + protected function valueFromJson($value): array + { + try { + return Data::decode($value, 'json'); + } catch (Throwable $e) { + return []; + } + } + + protected function valueFromYaml($value) + { + return Data::decode($value, 'yaml'); + } + + protected function valueToJson(array $value = null, bool $pretty = false): string + { + if ($pretty === true) { + return json_encode($value, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE); + } + + return json_encode($value); + } + + protected function valueToYaml(array $value = null): string + { + return Data::encode($value, 'yaml'); + } + + /** + * Returns the width of the field in + * the Panel grid + * + * @return string + */ + public function width(): string + { + return $this->width ?? '1/1'; + } +} diff --git a/kirby/src/Form/Fields.php b/kirby/src/Form/Fields.php index eb5b7bc..c00129b 100755 --- a/kirby/src/Form/Fields.php +++ b/kirby/src/Form/Fields.php @@ -30,7 +30,7 @@ class Fields extends Collection if (is_array($field) === true) { // use the array key as name if the name is not set $field['name'] = $field['name'] ?? $name; - $field = new Field($field['type'], $field); + $field = Field::factory($field['type'], $field, $this); } return parent::__set($field->name(), $field); diff --git a/kirby/src/Form/Form.php b/kirby/src/Form/Form.php index f8711d0..9a56a16 100755 --- a/kirby/src/Form/Form.php +++ b/kirby/src/Form/Form.php @@ -2,6 +2,7 @@ namespace Kirby\Form; +use Kirby\Cms\App; use Kirby\Data\Data; use Throwable; @@ -81,7 +82,7 @@ class Form } try { - $field = new Field($props['type'], $props, $this->fields); + $field = Field::factory($props['type'], $props, $this->fields); } catch (Throwable $e) { $field = static::exceptionField($e, $props); } @@ -178,13 +179,19 @@ class Form */ public static function exceptionField(Throwable $exception, array $props = []) { + $message = $exception->getMessage(); + + if (App::instance()->option('debug') === true) { + $message .= ' in file: ' . $exception->getFile() . ' line: ' . $exception->getLine(); + } + $props = array_merge($props, [ - 'label' => 'Error in "' . $props['name'] . '" field', + 'label' => 'Error in "' . $props['name'] . '" field.', 'theme' => 'negative', - 'text' => strip_tags($exception->getMessage()), + 'text' => strip_tags($message), ]); - return new Field('info', $props); + return Field::factory('info', $props); } /** diff --git a/kirby/src/Form/Mixin/EmptyState.php b/kirby/src/Form/Mixin/EmptyState.php new file mode 100755 index 0000000..14b2c36 --- /dev/null +++ b/kirby/src/Form/Mixin/EmptyState.php @@ -0,0 +1,18 @@ +empty = $this->i18n($empty); + } + + public function empty(): ?string + { + return $this->stringTemplate($this->empty); + } +} diff --git a/kirby/src/Form/Mixin/Max.php b/kirby/src/Form/Mixin/Max.php new file mode 100755 index 0000000..42b9ffb --- /dev/null +++ b/kirby/src/Form/Mixin/Max.php @@ -0,0 +1,18 @@ +max; + } + + protected function setMax(int $max = null) + { + $this->max = $max; + } +} diff --git a/kirby/src/Form/Mixin/Min.php b/kirby/src/Form/Mixin/Min.php new file mode 100755 index 0000000..7bf6585 --- /dev/null +++ b/kirby/src/Form/Mixin/Min.php @@ -0,0 +1,18 @@ +min; + } + + protected function setMin(int $min = null) + { + $this->min = $min; + } +} diff --git a/kirby/src/Http/Cookie.php b/kirby/src/Http/Cookie.php index 92fc936..007e42f 100755 --- a/kirby/src/Http/Cookie.php +++ b/kirby/src/Http/Cookie.php @@ -56,14 +56,8 @@ class Cookie $_COOKIE[$key] = $value; // store the cookie - // the array syntax is only supported by PHP 7.3+ - // TODO: Always use the first alternative when support for PHP 7.2 is dropped - if (version_compare(PHP_VERSION, '7.3.0', '>=') === true) { - $options = compact('expires', 'path', 'domain', 'secure', 'httponly', 'samesite'); - return setcookie($key, $value, $options); - } else { - return setcookie($key, $value, $expires, $path, $domain, $secure, $httponly); - } + $options = compact('expires', 'path', 'domain', 'secure', 'httponly', 'samesite'); + return setcookie($key, $value, $options); } /** diff --git a/kirby/src/Http/Route.php b/kirby/src/Http/Route.php index 362b5a2..9b56f36 100755 --- a/kirby/src/Http/Route.php +++ b/kirby/src/Http/Route.php @@ -93,7 +93,7 @@ class Route * @param Closure $action * @param array $attributes */ - public function __construct($pattern, $method = 'GET', Closure $action, array $attributes = []) + public function __construct($pattern, $method, Closure $action, array $attributes = []) { $this->action = $action; $this->attributes = $attributes; diff --git a/kirby/src/Image/Dimensions.php b/kirby/src/Image/Dimensions.php index 4a20662..de6e3f8 100755 --- a/kirby/src/Image/Dimensions.php +++ b/kirby/src/Image/Dimensions.php @@ -114,7 +114,7 @@ class Dimensions */ public function fit(int $box, bool $force = false) { - if ($this->width == 0 || $this->height == 0) { + if ($this->width === 0 || $this->height === 0) { $this->width = $box; $this->height = $box; return $this; @@ -379,7 +379,7 @@ class Dimensions */ public function square(): bool { - return $this->width == $this->height; + return $this->width === $this->height; } /** diff --git a/kirby/src/Image/Image.php b/kirby/src/Image/Image.php index 9a512b5..18d5edc 100755 --- a/kirby/src/Image/Image.php +++ b/kirby/src/Image/Image.php @@ -2,11 +2,10 @@ namespace Kirby\Image; -use Exception; +use Kirby\Exception\Exception; use Kirby\Http\Response; use Kirby\Toolkit\File; use Kirby\Toolkit\Html; -use Kirby\Toolkit\I18n; use Kirby\Toolkit\Mime; use Kirby\Toolkit\V; @@ -204,15 +203,44 @@ class Image extends File */ public function match(array $rules): bool { - if (($rules['mime'] ?? null) !== null) { - if (Mime::isAccepted($this->mime(), $rules['mime']) !== true) { - throw new Exception(I18n::template('error.file.mime.invalid', [ - 'mime' => $this->mime() - ])); + $rules = array_change_key_case($rules); + + if (is_array($rules['mime'] ?? null) === true) { + $mime = $this->mime(); + + // determine if any pattern matches the MIME type; + // once any pattern matches, `$carry` is `true` and the rest is skipped + $matches = array_reduce($rules['mime'], function ($carry, $pattern) use ($mime) { + return $carry || Mime::matches($mime, $pattern); + }, false); + + if ($matches !== true) { + throw new Exception([ + 'key' => 'file.mime.invalid', + 'data' => compact('mime') + ]); } } - $rules = array_change_key_case($rules); + if (is_array($rules['extension'] ?? null) === true) { + $extension = $this->extension(); + if (in_array($extension, $rules['extension']) !== true) { + throw new Exception([ + 'key' => 'file.extension.invalid', + 'data' => compact('extension') + ]); + } + } + + if (is_array($rules['type'] ?? null) === true) { + $type = $this->type(); + if (in_array($type, $rules['type']) !== true) { + throw new Exception([ + 'key' => 'file.type.invalid', + 'data' => compact('type') + ]); + } + } $validations = [ 'maxsize' => ['size', 'max'], @@ -232,9 +260,10 @@ class Image extends File $validator = $arguments[1]; if (V::$validator($this->$property(), $rule) === false) { - throw new Exception(I18n::template('error.file.' . $key, [ - $property => $rule - ])); + throw new Exception([ + 'key' => 'file.' . $key, + 'data' => [$property => $rule] + ]); } } } diff --git a/kirby/src/Image/Location.php b/kirby/src/Image/Location.php index 2c4e386..d38c79a 100755 --- a/kirby/src/Image/Location.php +++ b/kirby/src/Image/Location.php @@ -79,7 +79,7 @@ class Location $seconds = count($coord) > 2 ? $this->num($coord[2]) : 0; $hemi = strtoupper($hemi); - $flip = ($hemi == 'W' || $hemi == 'S') ? -1 : 1; + $flip = ($hemi === 'W' || $hemi === 'S') ? -1 : 1; return $flip * ($degrees + $minutes / 60 + $seconds / 3600); } @@ -94,7 +94,7 @@ class Location { $parts = explode('/', $part); - if (count($parts) == 1) { + if (count($parts) === 1) { return $parts[0]; } diff --git a/kirby/src/Parsley/Element.php b/kirby/src/Parsley/Element.php new file mode 100755 index 0000000..f4400cc --- /dev/null +++ b/kirby/src/Parsley/Element.php @@ -0,0 +1,100 @@ +marks = $marks; + $this->node = $node; + } + + public function attr(string $attr, $fallback = null) + { + if ($this->node->hasAttribute($attr)) { + return $this->node->getAttribute($attr) ?? $fallback; + } + + return $fallback; + } + + public function children() + { + return $this->node->childNodes; + } + + public function classList(): array + { + return Str::split($this->className(), ' '); + } + + public function className() + { + return $this->node->getAttribute('class'); + } + + public function element() + { + return $this->node; + } + + public function filter(string $query) + { + $result = []; + + if ($queryResult = $this->query($query)) { + foreach ($queryResult as $node) { + $result[] = new static($node); + } + } + + return $result; + } + + public function find(string $query) + { + if ($result = $this->query($query)[0]) { + return new static($result); + } + + return false; + } + + public function innerHtml(array $marks = null): string + { + return (new Inline($this->node, $marks ?? $this->marks))->innerHtml(); + } + + public function innerText() + { + return trim($this->node->textContent); + } + + public function outerHtml(array $marks = null): string + { + return $this->node->ownerDocument->saveHtml($this->node); + } + + public function query($query) + { + return (new DOMXPath($this->node->ownerDocument))->query($query, $this->node); + } + + public function remove() + { + $this->node->parentNode->removeChild($this->node); + } + + public function tagName(): string + { + return $this->node->tagName; + } +} diff --git a/kirby/src/Parsley/Inline.php b/kirby/src/Parsley/Inline.php new file mode 100755 index 0000000..4f8be2e --- /dev/null +++ b/kirby/src/Parsley/Inline.php @@ -0,0 +1,74 @@ +createMarkRules($marks); + $this->html = trim($this->parseNode($node)); + } + + public function createMarkRules($marks) + { + foreach ($marks as $mark) { + $this->marks[$mark['tag']] = $mark; + } + } + + public function parseChildren($children): string + { + if (!$children) { + return ''; + } + + $html = ''; + foreach ($children as $child) { + $html .= $this->parseNode($child); + } + return $html; + } + + public function parseNode($node) + { + $html = ''; + + if (is_a($node, 'DOMText') === true) { + return $node->textContent; + } + + // ignore comments + if (is_a($node, 'DOMComment') === true) { + return ''; + } + + // known marks + if (array_key_exists($node->tagName, $this->marks) === true) { + $mark = $this->marks[$node->tagName]; + $attrs = []; + $defaults = $mark['defaults'] ?? []; + + foreach ($mark['attrs'] ?? [] as $attr) { + if ($node->hasAttribute($attr)) { + $attrs[$attr] = $node->getAttribute($attr); + } else { + $attrs[$attr] = $defaults[$attr] ?? null; + } + } + + return '<' . $node->tagName . attr($attrs, ' ') . '>' . $this->parseChildren($node->childNodes) . 'tagName . '>'; + } + + // unknown marks + return $this->parseChildren($node->childNodes); + } + + public function innerHtml() + { + return $this->html; + } +} diff --git a/kirby/src/Parsley/Parsley.php b/kirby/src/Parsley/Parsley.php new file mode 100755 index 0000000..22dc4eb --- /dev/null +++ b/kirby/src/Parsley/Parsley.php @@ -0,0 +1,231 @@ +useXmlExtension() === false) { + $this->blocks[] = [ + 'type' => 'markdown', + 'content' => [ + 'text' => $html, + ] + ]; + return; + } + + libxml_use_internal_errors(true); + + $this->doc = new DOMDocument(); + $this->doc->preserveWhiteSpace = false; + $this->doc->loadHTML(mb_convert_encoding($html, 'HTML-ENTITIES', 'UTF-8')); + + libxml_clear_errors(); + + $this->schema = $schema ?? new Plain(); + $this->skip = $this->schema->skip(); + $this->marks = $this->schema->marks(); + $this->inline = []; + + $this->createNodeRules($this->schema->nodes()); + + $this->parseNode($this->body()); + $this->endInlineBlock(); + } + + public function blocks(): array + { + return $this->blocks; + } + + public function body() + { + return $this->body = $this->body ?? $this->query($this->doc, '/html/body')[0]; + } + + public function createNodeRules($nodes) + { + foreach ($nodes as $node) { + $this->nodes[$node['tag']] = $node; + } + } + + public function containsBlock($element): bool + { + if (!$element->childNodes) { + return false; + } + + foreach ($element->childNodes as $childNode) { + if ($this->isBlock($childNode) === true || $this->containsBlock($childNode)) { + return true; + } + } + + return false; + } + + public function endInlineBlock() + { + $html = []; + + foreach ($this->inline as $inline) { + $node = new Inline($inline, $this->marks); + $html[] = $node->innerHTML(); + } + + $innerHTML = implode(' ', $html); + + if ($fallback = $this->fallback($innerHTML)) { + $this->mergeOrAppend($fallback); + } + + $this->inline = []; + } + + public function fallback($node) + { + if (is_a($node, 'DOMText') === true) { + $html = $node->textContent; + } elseif (is_a($node, Element::class) === true) { + $html = $node->innerHtml(); + } elseif (is_string($node) === true) { + $html = $node; + } else { + $html = ''; + } + + if ($fallback = $this->schema->fallback($html)) { + return $fallback; + } + + return false; + } + + public function isBlock($element): bool + { + if (is_a($element, 'DOMElement') === false) { + return false; + } + + return array_key_exists($element->tagName, $this->nodes) === true; + } + + public function isInline($element) + { + if (is_a($element, 'DOMText') === true) { + return true; + } + + if (is_a($element, 'DOMElement') === true) { + if ($this->containsBlock($element) === true) { + return false; + } + + if ($element->tagName === 'p') { + return false; + } + + $marks = array_column($this->marks, 'tag'); + return in_array($element->tagName, $marks); + } + + return false; + } + + public function mergeOrAppend($block) + { + $lastIndex = count($this->blocks) - 1; + $lastItem = $this->blocks[$lastIndex] ?? null; + + // merge with previous block + if ($block['type'] === 'text' && $lastItem && $lastItem['type'] === 'text') { + $this->blocks[$lastIndex]['content']['text'] .= "\n\n" . $block['content']['text']; + + // append + } else { + $this->blocks[] = $block; + } + } + + public function parseNode($element) + { + // comments + if (is_a($element, 'DOMComment') === true) { + return true; + } + + + // inline context + if ($this->isInline($element)) { + $this->inline[] = $element; + return true; + } else { + $this->endInlineBlock(); + } + + // known block nodes + if ($this->isBlock($element) === true) { + if ($parser = ($this->nodes[$element->tagName]['parse'] ?? null)) { + if ($result = $parser(new Element($element, $this->marks))) { + $this->blocks[] = $result; + } + } + return true; + } + + // has only unkown children (div, etc.) + if ($this->containsBlock($element) === false) { + if (in_array($element->tagName, $this->skip) === true) { + return true; + } + + if ($element->tagName !== 'body') { + $node = new Element($element, $this->marks); + + if ($block = $this->fallback($node)) { + $this->mergeOrAppend($block); + } + + return true; + } + } + + // parse all children + foreach ($element->childNodes as $childNode) { + $this->parseNode($childNode); + } + } + + public function query($element, $query) + { + return (new DOMXPath($element))->query($query); + } + + public function useXmlExtension(): bool + { + if (static::$useXmlExtension !== true) { + return false; + } + + return class_exists('DOMDocument') === true; + } +} diff --git a/kirby/src/Parsley/Schema.php b/kirby/src/Parsley/Schema.php new file mode 100755 index 0000000..d6ff231 --- /dev/null +++ b/kirby/src/Parsley/Schema.php @@ -0,0 +1,11 @@ + [ + 'text' => '

    ' . $html . '

    ', + ], + 'type' => 'text', + ]; + } + + public function heading($node, $level) + { + $content = [ + 'level' => $level, + 'text' => $node->innerHTML() + ]; + + if ($id = $node->attr('id')) { + $content['id'] = $id; + } + + ksort($content); + + return [ + 'content' => $content, + 'type' => 'heading', + ]; + } + + public function list($node) + { + $html = []; + + foreach ($node->filter('li') as $li) { + $innerHtml = ''; + + foreach ($li->children() as $child) { + if (is_a($child, 'DOMText') === true) { + $innerHtml .= $child->textContent; + } elseif (is_a($child, 'DOMElement') === true) { + $child = new Element($child); + + if (in_array($child->tagName(), ['ul', 'ol']) === true) { + $innerHtml .= $this->list($child); + } else { + $innerHtml .= $child->innerHTML($this->marks()); + } + } + } + + $html[] = '
  • ' . trim($innerHtml) . '
  • '; + } + + return '<' . $node->tagName() . '>' . implode($html) . 'tagName() . '>'; + } + + public function marks(): array + { + return [ + [ + 'tag' => 'a', + 'attrs' => ['href', 'target', 'title'], + ], + [ + 'tag' => 'abbr', + ], + [ + 'tag' => 'b' + ], + [ + 'tag' => 'code' + ], + [ + 'tag' => 'del', + ], + [ + 'tag' => 'em', + ], + [ + 'tag' => 'i', + ], + [ + 'tag' => 'strike', + ], + [ + 'tag' => 'sub', + ], + [ + 'tag' => 'sup', + ], + [ + 'tag' => 'strong', + ], + [ + 'tag' => 'u', + ], + ]; + } + + public function nodes(): array + { + return [ + [ + 'tag' => 'blockquote', + 'parse' => function ($node) { + $citation = null; + $text = []; + + // get all the text for the quote + foreach ($node->element()->childNodes as $child) { + if (is_a($child, 'DOMText') === true) { + $text[] = trim($child->textContent); + } + if (is_a($child, 'DOMElement') === true && $child->tagName !== 'footer') { + $text[] = (new Element($child))->innerHTML($this->marks()); + } + } + + // filter empty blocks and separate text blocks with breaks + $text = implode('

    ', array_filter($text)); + + // get the citation from the footer + if ($footer = $node->find('footer')) { + $citation = $footer->innerHTML($this->marks()); + } + + return [ + 'content' => [ + 'citation' => $citation, + 'text' => $text + ], + 'type' => 'quote', + ]; + } + ], + [ + 'tag' => 'h1', + 'parse' => function ($node) { + return $this->heading($node, 'h1'); + } + ], + [ + 'tag' => 'h2', + 'parse' => function ($node) { + return $this->heading($node, 'h2'); + } + ], + [ + 'tag' => 'h3', + 'parse' => function ($node) { + return $this->heading($node, 'h3'); + } + ], + [ + 'tag' => 'h4', + 'parse' => function ($node) { + return $this->heading($node, 'h4'); + } + ], + [ + 'tag' => 'h5', + 'parse' => function ($node) { + return $this->heading($node, 'h5'); + } + ], + [ + 'tag' => 'h6', + 'parse' => function ($node) { + return $this->heading($node, 'h6'); + } + ], + [ + 'tag' => 'iframe', + 'parse' => function ($node) { + $caption = null; + $src = $node->attr('src'); + + if ($figcaption = $node->find('ancestor::figure[1]//figcaption')) { + $caption = $figcaption->innerHTML($this->marks()); + + // avoid parsing the caption twice + $figcaption->remove(); + } + + // reverse engineer video URLs + if (preg_match('!player.vimeo.com\/video\/([0-9]+)!i', $src, $array) === 1) { + $src = 'https://vimeo.com/' . $array[1]; + } elseif (preg_match('!youtube.com\/embed\/([a-zA-Z0-9_-]+)!', $src, $array) === 1) { + $src = 'https://youtube.com/watch?v=' . $array[1]; + } elseif (preg_match('!youtube-nocookie.com\/embed\/([a-zA-Z0-9_-]+)!', $src, $array) === 1) { + $src = 'https://youtube.com/watch?v=' . $array[1]; + } else { + $src = false; + } + + // correct video URL + if ($src) { + return [ + 'content' => [ + 'caption' => $caption, + 'url' => $src + ], + 'type' => 'video', + ]; + } + + return [ + 'content' => [ + 'text' => $node->outerHTML() + ], + 'type' => 'markdown', + ]; + } + ], + [ + 'tag' => 'img', + 'parse' => function ($node) { + $caption = null; + $link = null; + + if ($figcaption = $node->find('ancestor::figure[1]//figcaption')) { + $caption = $figcaption->innerHTML($this->marks()); + + // avoid parsing the caption twice + $figcaption->remove(); + } + + if ($a = $node->find('ancestor::a')) { + $link = $a->attr('href'); + } + + return [ + 'content' => [ + 'alt' => $node->attr('alt'), + 'caption' => $caption, + 'link' => $link, + 'location' => 'web', + 'src' => $node->attr('src'), + ], + 'type' => 'image', + ]; + } + ], + [ + 'tag' => 'ol', + 'parse' => function ($node) { + return [ + 'content' => [ + 'text' => $this->list($node) + ], + 'type' => 'list', + ]; + } + ], + [ + 'tag' => 'pre', + 'parse' => function ($node) { + $language = 'text'; + + if ($code = $node->find('//code')) { + foreach ($code->classList() as $className) { + if (preg_match('!language-(.*?)!', $className)) { + $language = str_replace('language-', '', $className); + break; + } + } + } + + return [ + 'content' => [ + 'code' => $node->innerText(), + 'language' => $language + ], + 'type' => 'code', + ]; + } + ], + [ + 'tag' => 'table', + 'parse' => function ($node) { + return [ + 'content' => [ + 'text' => $node->outerHTML(), + ], + 'type' => 'markdown', + ]; + } + ], + [ + 'tag' => 'ul', + 'parse' => function ($node) { + return [ + 'content' => [ + 'text' => $this->list($node) + ], + 'type' => 'list', + ]; + } + ], + ]; + } +} diff --git a/kirby/src/Parsley/Schema/Plain.php b/kirby/src/Parsley/Schema/Plain.php new file mode 100755 index 0000000..c2408e4 --- /dev/null +++ b/kirby/src/Parsley/Schema/Plain.php @@ -0,0 +1,40 @@ + 'text', + 'content' => [ + 'text' => $text + ] + ]; + } + + public function marks(): array + { + return []; + } + + public function nodes(): array + { + return []; + } + + public function skip(): array + { + return ['meta', 'script', 'style']; + } +} diff --git a/kirby/src/Toolkit/A.php b/kirby/src/Toolkit/A.php index 29d51d0..ea30f7c 100755 --- a/kirby/src/Toolkit/A.php +++ b/kirby/src/Toolkit/A.php @@ -141,13 +141,13 @@ class A * * @param array $array1 * @param array $array2 - * @param bool $mode Behavior for elements with numeric keys; - * A::MERGE_APPEND: elements are appended, keys are reset; - * A::MERGE_OVERWRITE: elements are overwritten, keys are preserved - * A::MERGE_REPLACE: non-associative arrays are completely replaced + * @param int $mode Behavior for elements with numeric keys; + * A::MERGE_APPEND: elements are appended, keys are reset; + * A::MERGE_OVERWRITE: elements are overwritten, keys are preserved + * A::MERGE_REPLACE: non-associative arrays are completely replaced * @return array */ - public static function merge($array1, $array2, $mode = A::MERGE_APPEND) + public static function merge($array1, $array2, int $mode = A::MERGE_APPEND) { $merged = $array1; @@ -158,7 +158,7 @@ class A foreach ($array2 as $key => $value) { // append to the merged array, don't overwrite numeric keys - if (is_int($key) === true && $mode == static::MERGE_APPEND) { + if (is_int($key) === true && $mode === static::MERGE_APPEND) { $merged[] = $value; // recursively merge the two array values @@ -171,7 +171,7 @@ class A } } - if ($mode == static::MERGE_APPEND) { + if ($mode === static::MERGE_APPEND) { // the keys don't make sense anymore, reset them // array_merge() is the simplest way to renumber // arrays that have both numeric and string keys; @@ -553,7 +553,7 @@ class A */ public static function sort(array $array, string $field, string $direction = 'desc', $method = SORT_REGULAR): array { - $direction = strtolower($direction) == 'desc' ? SORT_DESC : SORT_ASC; + $direction = strtolower($direction) === 'desc' ? SORT_DESC : SORT_ASC; $helper = []; $result = []; diff --git a/kirby/src/Toolkit/Collection.php b/kirby/src/Toolkit/Collection.php index b7aeb37..3100c37 100755 --- a/kirby/src/Toolkit/Collection.php +++ b/kirby/src/Toolkit/Collection.php @@ -236,55 +236,53 @@ class Collection extends Iterator implements Countable return $collection->set($items); } - /** - * Filters elements by a custom - * filter function or an array of filters - * - * @param array|\Closure $filter - * @return self - * @throws \Exception if $filter is neither a closure nor an array - */ - public function filter($filter) - { - if (is_callable($filter) === true) { - $collection = clone $this; - $collection->data = array_filter($this->data, $filter); - - return $collection; - } elseif (is_array($filter) === true) { - $collection = $this; - - foreach ($filter as $arguments) { - $collection = $collection->filterBy(...$arguments); - } - - return $collection; - } - - throw new Exception('The filter method needs either an array of filterBy rules or a closure function to be passed as parameter.'); - } - /** * Filters elements by one of the - * predefined filter methods. + * predefined filter methods, by a + * custom filter function or an array of filters * - * @param string $field + * @param string|array|\Closure $field * @param array ...$args * @return \Kirby\Toolkit\Collection */ - public function filterBy(string $field, ...$args) + public function filter($field, ...$args) { $operator = '=='; $test = $args[0] ?? null; $split = $args[1] ?? false; - if (is_string($test) === true && isset(static::$filters[$test]) === true) { + // filter by custom filter function + if (is_callable($field) === true) { + $collection = clone $this; + $collection->data = array_filter($this->data, $field); + + return $collection; + } + + // array of filters + if (is_array($field) === true) { + $collection = $this; + + foreach ($field as $filter) { + $collection = $collection->filter(...$filter); + } + + return $collection; + } + + if ( + is_string($test) === true && + isset(static::$filters[$test]) === true + ) { $operator = $test; $test = $args[1] ?? null; $split = $args[2] ?? false; } - if (is_object($test) === true && method_exists($test, '__toString') === true) { + if ( + is_object($test) === true && + method_exists($test, '__toString') === true + ) { $test = (string)$test; } @@ -321,11 +319,18 @@ class Collection extends Iterator implements Countable } /** - * @param string $validator - * @param mixed $values - * @param mixed $test - * @return bool + * Alias for `Kirby\Toolkit\Collection::filter` + * + * @param string|Closure $field + * @param array ...$args + * @return self */ + public function filterBy(...$args) + { + return $this->filter(...$args); + } + + protected function filterMatchesAny($validator, $values, $test): bool { foreach ($values as $value) { @@ -472,7 +477,7 @@ class Collection extends Iterator implements Countable * Extracts an attribute value from the given element * in the collection. This is useful if elements in the collection * might be objects, arrays or anything else and you need to - * get the value independently from that. We use it for filterBy. + * get the value independently from that. We use it for `filter`. * * @param array|object $item * @param string $attribute @@ -516,69 +521,77 @@ class Collection extends Iterator implements Countable } /** - * Groups the elements by a given callback + * Groups the elements by a given field or callback function * - * @param \Closure $callback - * @return \Kirby\Toolkit\Collection A new collection with an element for each group and a sub collection in each group - * @throws \Exception + * @param string|Closure $field + * @param bool $i + * @return \Kirby\Toolkit\Collection A new collection with an element for each group and a subcollection in each group + * @throws \Exception if $field is not a string nor a callback function */ - public function group(Closure $callback) + public function group($field, bool $i = true) { - $groups = []; - foreach ($this->data as $key => $item) { + // group by field name + if (is_string($field) === true) { + return $this->group(function ($item) use ($field, $i) { + $value = $this->getAttribute($item, $field); - // get the value to group by - $value = $callback($item); + // ignore upper/lowercase for group names + return $i === true ? Str::lower($value) : $value; + }); + } - // make sure that there's always a proper value to group by - if (!$value) { - throw new Exception('Invalid grouping value for key: ' . $key); - } + // group via callback function + if (is_callable($field) === true) { + $groups = []; - // make sure we have a proper key for each group - if (is_array($value) === true) { - throw new Exception('You cannot group by arrays or objects'); - } elseif (is_object($value) === true) { - if (method_exists($value, '__toString') === false) { + foreach ($this->data as $key => $item) { + + // get the value to group by + $value = $field($item); + + // make sure that there's always a proper value to group by + if (!$value) { + throw new Exception('Invalid grouping value for key: ' . $key); + } + + // make sure we have a proper key for each group + if (is_array($value) === true) { throw new Exception('You cannot group by arrays or objects'); + } elseif (is_object($value) === true) { + if (method_exists($value, '__toString') === false) { + throw new Exception('You cannot group by arrays or objects'); + } else { + $value = (string)$value; + } + } + + if (isset($groups[$value]) === false) { + // create a new entry for the group if it does not exist yet + $groups[$value] = new static([$key => $item]); } else { - $value = (string)$value; + // add the element to an existing group + $groups[$value]->set($key, $item); } } - if (isset($groups[$value]) === false) { - // create a new entry for the group if it does not exist yet - $groups[$value] = new static([$key => $item]); - } else { - // add the element to an existing group - $groups[$value]->set($key, $item); - } + return new Collection($groups); } - return new Collection($groups); + throw new Exception('Can only group by string values or by providing a callback function'); } /** - * Groups the elements by a given field + * Alias for `Kirby\Toolkit\Collection::group` * - * @param string $field + * @param string|Closure $field * @param bool $i * @return \Kirby\Toolkit\Collection A new collection with an element for each group and a sub collection in each group * @throws \Exception */ - public function groupBy($field, bool $i = true) + public function groupBy(...$args) { - if (is_string($field) === false) { - throw new Exception('Cannot group by non-string values. Did you mean to call group()?'); - } - - return $this->group(function ($item) use ($field, $i) { - $value = $this->getAttribute($item, $field); - - // ignore upper/lowercase for group names - return $i === true ? Str::lower($value) : $value; - }); + return $this->group(...$args); } /** @@ -799,7 +812,7 @@ class Collection extends Iterator implements Countable } /** - * Runs a combination of filterBy, sortBy, not + * Runs a combination of filter, sort, not, * offset, limit and paginate on the collection. * Any part of the query is optional. * @@ -814,10 +827,17 @@ class Collection extends Iterator implements Countable $result = $result->not(...$arguments['not']); } - if (isset($arguments['filterBy']) === true) { - foreach ($arguments['filterBy'] as $filter) { - if (isset($filter['field']) === true && isset($filter['value']) === true) { - $result = $result->filterBy($filter['field'], $filter['operator'] ?? '==', $filter['value']); + if ($filters = $arguments['filterBy'] ?? $arguments['filter'] ?? null) { + foreach ($filters as $filter) { + if ( + isset($filter['field']) === true && + isset($filter['value']) === true + ) { + $result = $result->filter( + $filter['field'], + $filter['operator'] ?? '==', + $filter['value'] + ); } } } @@ -830,18 +850,18 @@ class Collection extends Iterator implements Countable $result = $result->limit($arguments['limit']); } - if (isset($arguments['sortBy']) === true) { - if (is_array($arguments['sortBy'])) { - $sort = explode(' ', implode(' ', $arguments['sortBy'])); + if ($sort = $arguments['sortBy'] ?? $arguments['sort'] ?? null) { + if (is_array($sort)) { + $sort = explode(' ', implode(' ', $sort)); } else { - // if there are commas in the sortBy argument, removes it - if (Str::contains($arguments['sortBy'], ',') === true) { - $arguments['sortBy'] = Str::replace($arguments['sortBy'], ',', ''); + // if there are commas in the sort argument, removes it + if (Str::contains($sort, ',') === true) { + $sort = Str::replace($sort, ',', ''); } - $sort = explode(' ', $arguments['sortBy']); + $sort = explode(' ', $sort); } - $result = $result->sortBy(...$sort); + $result = $result->sort(...$sort); } if (isset($arguments['paginate']) === true) { @@ -924,17 +944,17 @@ class Collection extends Iterator implements Countable /** * Get sort arguments from a string * - * @param string $sortBy + * @param string $sort * @return array */ - public static function sortArgs(string $sortBy): array + public static function sortArgs(string $sort): array { // if there are commas in the sortBy argument, removes it - if (Str::contains($sortBy, ',') === true) { - $sortBy = Str::replace($sortBy, ',', ''); + if (Str::contains($sort, ',') === true) { + $sort = Str::replace($sort, ',', ''); } - $sortArgs = Str::split($sortBy, ' '); + $sortArgs = Str::split($sort, ' '); // fill in PHP constants array_walk($sortArgs, function (string &$value) { @@ -954,7 +974,7 @@ class Collection extends Iterator implements Countable * @param int $method The sort flag, SORT_REGULAR, SORT_NUMERIC etc. * @return \Kirby\Toolkit\Collection */ - public function sortBy() + public function sort() { // there is no need to sort empty collections if (empty($this->data) === true) { @@ -1062,6 +1082,19 @@ class Collection extends Iterator implements Countable return $collection; } + /** + * Alias for `Kirby\Toolkit\Collection::sort` + * + * @param string|callable $field Field name or value callback to sort by + * @param string $direction asc or desc + * @param int $method The sort flag, SORT_REGULAR, SORT_NUMERIC etc. + * @return Collection + */ + public function sortBy(...$args) + { + return $this->sort(...$args); + } + /** * Converts the object into an array * diff --git a/kirby/src/Toolkit/F.php b/kirby/src/Toolkit/F.php index 209c611..bee7fe7 100755 --- a/kirby/src/Toolkit/F.php +++ b/kirby/src/Toolkit/F.php @@ -554,6 +554,10 @@ class F */ public static function read(string $file) { + if (is_file($file) !== true) { + return false; + } + return @file_get_contents($file); } @@ -764,6 +768,18 @@ class F return null; } + /** + * Returns all extensions of a given file type + * or `null` if the file type is unknown + * + * @param string $type + * @return array|null + */ + public static function typeToExtensions(string $type): ?array + { + return static::$types[$type] ?? null; + } + /** * Unzips a zip file * diff --git a/kirby/src/Toolkit/I18n.php b/kirby/src/Toolkit/I18n.php index 583ed77..9881019 100755 --- a/kirby/src/Toolkit/I18n.php +++ b/kirby/src/Toolkit/I18n.php @@ -3,6 +3,7 @@ namespace Kirby\Toolkit; use Closure; +use NumberFormatter; /** * Localization class, roughly inspired by VueI18n @@ -43,6 +44,13 @@ class I18n */ public static $fallback = 'en'; + /** + * Cache of `NumberFormatter` objects by locale + * + * @var array + */ + protected static $decimalNumberFormatters = []; + /** * Returns the fallback code * @@ -78,6 +86,25 @@ class I18n return $count === 1 ? 'singular' : 'plural'; } + /** + * Formats a number + * + * @param int|float $number + * @param string $locale + * @return string + */ + public static function formatNumber($number, string $locale = null): string + { + $locale = $locale ?? static::locale(); + + $formatter = static::decimalNumberFormatter($locale); + if ($formatter !== null) { + $number = $formatter->format($number); + } + + return (string)$number; + } + /** * Returns the locale code * @@ -189,6 +216,24 @@ class I18n return static::$translations; } + /** + * Returns (and creates) a decimal number formatter for a given locale + * + * @return \NumberFormatter|null + */ + protected static function decimalNumberFormatter(string $locale): ?NumberFormatter + { + if (isset(static::$decimalNumberFormatters[$locale])) { + return static::$decimalNumberFormatters[$locale]; + } + + if (extension_loaded('intl') !== true || class_exists('NumberFormatter') !== true) { + return null; + } + + return static::$decimalNumberFormatters[$locale] = new NumberFormatter($locale, NumberFormatter::DECIMAL); + } + /** * Translates amounts * @@ -202,10 +247,13 @@ class I18n * @param string $key * @param int $count * @param string $locale + * @param bool $formatNumber If set to `false`, the count is not formatted * @return mixed */ - public static function translateCount(string $key, int $count, string $locale = null) + public static function translateCount(string $key, int $count, string $locale = null, bool $formatNumber = true) { + $locale = $locale ?? static::locale(); + $translation = static::translate($key, null, $locale); if ($translation === null) { @@ -226,6 +274,10 @@ class I18n } } + if ($formatNumber === true) { + $count = static::formatNumber($count, $locale); + } + return str_replace('{{ count }}', $count, $message); } } diff --git a/kirby/src/Toolkit/Locale.php b/kirby/src/Toolkit/Locale.php new file mode 100755 index 0000000..7798d22 --- /dev/null +++ b/kirby/src/Toolkit/Locale.php @@ -0,0 +1,101 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier GmbH + * @license https://opensource.org/licenses/MIT + */ +class Locale +{ + /** + * Converts a normalized locale array to an array with the + * locale constants replaced with their string representations + * + * @param array $locale + * @return array + */ + public static function export(array $locale): array + { + // list of all possible constant names + $constantNames = [ + 'LC_ALL', 'LC_COLLATE', 'LC_CTYPE', 'LC_MONETARY', + 'LC_NUMERIC', 'LC_TIME', 'LC_MESSAGES' + ]; + + // build an associative array with the locales + // that are actually supported on this system + $constants = []; + foreach ($constantNames as $name) { + if (defined($name) === true) { + $constants[constant($name)] = $name; + } + } + + // replace the keys in the locale data array with the locale names + $return = []; + foreach ($locale as $key => $value) { + if (isset($constants[$key]) === true) { + // the key is a valid constant, + // replace it with its string representation + $return[$constants[$key]] = $value; + } else { + // not found, keep it as-is + $return[$key] = $value; + } + } + + return $return; + } + + /** + * Converts a locale string or an array with constant or + * string keys to a normalized constant => value array + * + * @param array|string $locale + * @return array + */ + public static function normalize($locale): array + { + if (is_array($locale)) { + // replace string constant keys with the constant values + $convertedLocale = []; + foreach ($locale as $key => $value) { + if (is_string($key) === true && Str::startsWith($key, 'LC_') === true) { + $key = constant($key); + } + + $convertedLocale[$key] = $value; + } + + return $convertedLocale; + } elseif (is_string($locale)) { + return [LC_ALL => $locale]; + } else { + throw new InvalidArgumentException('Locale must be string or array'); + } + } + + /** + * Sets the PHP locale with a locale string or + * an array with constant or string keys + * + * @param array|string $locale + * @return void + */ + public static function set($locale): void + { + $locale = static::normalize($locale); + + foreach ($locale as $key => $value) { + setlocale($key, $value); + } + } +} diff --git a/kirby/src/Toolkit/Pagination.php b/kirby/src/Toolkit/Pagination.php index edece83..7243bb4 100755 --- a/kirby/src/Toolkit/Pagination.php +++ b/kirby/src/Toolkit/Pagination.php @@ -126,48 +126,30 @@ class Pagination /** * Getter for the current page * - * @deprecated 3.3.0 Setter is no longer supported, use $pagination->clone() * @return int - * @codeCoverageIgnore */ - public function page(int $page = null): int + public function page(): int { - if ($page !== null) { - throw new Exception('$pagination->page() setter is no longer supported, use $pagination->clone()'); // @codeCoverageIgnore - } - return $this->page; } /** * Getter for the total number of items * - * @deprecated 3.3.0 Setter is no longer supported, use $pagination->clone() * @return int - * @codeCoverageIgnore */ - public function total(int $total = null): int + public function total(): int { - if ($total !== null) { - throw new Exception('$pagination->total() setter is no longer supported, use $pagination->clone()'); // @codeCoverageIgnore - } - return $this->total; } /** * Getter for the number of items per page * - * @deprecated 3.3.0 Setter is no longer supported, use $pagination->clone() * @return int - * @codeCoverageIgnore */ - public function limit(int $limit = null): int + public function limit(): int { - if ($limit !== null) { - throw new Exception('$pagination->limit() setter is no longer supported, use $pagination->clone()'); // @codeCoverageIgnore - } - return $this->limit; } diff --git a/kirby/src/Toolkit/Str.php b/kirby/src/Toolkit/Str.php index c96ca1c..6ca647d 100755 --- a/kirby/src/Toolkit/Str.php +++ b/kirby/src/Toolkit/Str.php @@ -289,7 +289,7 @@ class Str for ($i = 0; $i < static::length($string); $i++) { $char = static::substr($string, $i, 1); list(, $code) = unpack('N', mb_convert_encoding($char, 'UCS-4BE', 'UTF-8')); - $encoded .= rand(1, 2) == 1 ? '&#' . $code . ';' : '&#x' . dechex($code) . ';'; + $encoded .= rand(1, 2) === 1 ? '&#' . $code . ';' : '&#x' . dechex($code) . ';'; } return $encoded; @@ -957,7 +957,7 @@ class Str * @param mixed $type * @return mixed */ - public static function toType($string = null, $type) + public static function toType($string, $type) { if (is_string($type) === false) { $type = gettype($type); diff --git a/kirby/vendor/autoload.php b/kirby/vendor/autoload.php index e15730a..6c09af8 100755 --- a/kirby/vendor/autoload.php +++ b/kirby/vendor/autoload.php @@ -4,4 +4,4 @@ require_once __DIR__ . '/composer/autoload_real.php'; -return ComposerAutoloaderInit12091bebabd81c9aba88b2aeec22c8d7::getLoader(); +return ComposerAutoloaderInitc26333d865e0329b638bdc17afd29896::getLoader(); diff --git a/kirby/vendor/claviska/simpleimage/src/claviska/SimpleImage.php b/kirby/vendor/claviska/simpleimage/src/claviska/SimpleImage.php index 86e930b..68f1dfc 100755 --- a/kirby/vendor/claviska/simpleimage/src/claviska/SimpleImage.php +++ b/kirby/vendor/claviska/simpleimage/src/claviska/SimpleImage.php @@ -15,6 +15,9 @@ namespace claviska; +/** + * A PHP class that makes working with images as simple as possible. + */ class SimpleImage { const @@ -30,17 +33,21 @@ class SimpleImage { ERR_WEBP_NOT_ENABLED = 10, ERR_WRITE = 11; - protected $image, $mimeType, $exif; + + protected $image; + protected $mimeType; + protected $exif; ////////////////////////////////////////////////////////////////////////////////////////////////// // Magic methods ////////////////////////////////////////////////////////////////////////////////////////////////// - // - // Creates a new SimpleImage object. - // - // $image (string) - An image file or a data URI to load. - // + /** + * Creates a new SimpleImage object. + * + * @param string $image An image file or a data URI to load. + * @throws \Exception Thrown if the GD library is not found; file|URI or image data is invalid. + */ public function __construct($image = null) { // Check for the required GD extension if(extension_loaded('gd')) { @@ -58,11 +65,11 @@ class SimpleImage { } } - // - // Destroys the image resource - // + /** + * Destroys the image resource. + */ public function __destruct() { - if($this->image !== null && get_resource_type($this->image) === 'gd') { + if($this->image !== null && is_resource($this->image) && get_resource_type($this->image) === 'gd') { imagedestroy($this->image); } } @@ -71,13 +78,13 @@ class SimpleImage { // Loaders ////////////////////////////////////////////////////////////////////////////////////////////////// - // - // Loads an image from a data URI. - // - // $uri* (string) - A data URI. - // - // Returns a SimpleImage object. - // + /** + * Loads an image from a data URI. + * + * @param string $uri A data URI. + * @throws \Exception Thrown if URI or image data is invalid. + * @return \claviska\SimpleImage + */ public function fromDataUri($uri) { // Basic formatting check preg_match('/^data:(.*?);/', $uri, $matches); @@ -104,13 +111,13 @@ class SimpleImage { return $this; } - // - // Loads an image from a file. - // - // $file* (string) - The image file to load. - // - // Returns a SimpleImage object. - // + /** + * Loads an image from a file. + * + * @param string $file The image file to load. + * @throws \Exception Thrown if file or image data is invalid. + * @return \claviska\SimpleImage + */ public function fromFile($file) { // Check if the file exists and is readable. We're using fopen() instead of file_exists() // because not all URL wrappers support the latter. @@ -175,15 +182,14 @@ class SimpleImage { return $this; } - // - // Creates a new image. - // - // $width* (int) - The width of the image. - // $height* (int) - The height of the image. - // $color (string|array) - Optional fill color for the new image (default 'transparent'). - // - // Returns a SimpleImage object. - // + /** + * Creates a new image. + * + * @param integer $width The width of the image. + * @param integer $height The height of the image. + * @param string|array $color Optional fill color for the new image (default 'transparent'). + * @return \claviska\SimpleImage + */ public function fromNew($width, $height, $color = 'transparent') { $this->image = imagecreatetruecolor($width, $height); @@ -196,15 +202,14 @@ class SimpleImage { return $this; } - // - // Creates a new image from a string. - // - // $string* (string) - The raw image data as a string. Example: - // - // $string = file_get_contents('image.jpg'); - // - // Returns a SimpleImage object. - // + /** + * Creates a new image from a string. + * + * @param string $string The raw image data as a string. + * @example + * $string = file_get_contents('image.jpg'); + * @return \claviska\SimpleImage + */ public function fromString($string) { return $this->fromFile('data://;base64,' . base64_encode($string)); } @@ -213,15 +218,14 @@ class SimpleImage { // Savers ////////////////////////////////////////////////////////////////////////////////////////////////// - // - // Generates an image. - // - // $mimeType (string) - The image format to output as a mime type (defaults to the original mime - // type). - // $quality (int) - Image quality as a percentage (default 100). - // - // Returns an array containing the image data and mime type. - // + /** + * Generates an image. + * + * @param string $mimeType The image format to output as a mime type (defaults to the original mime type). + * @param integer $quality Image quality as a percentage (default 100). + * @throws \Exception Thrown when WEBP support is not enabled or unsupported format. + * @return array Returns an array containing the image data and mime type ['data' => '', 'mimeType' => '']. + */ protected function generate($mimeType = null, $quality = 100) { // Format defaults to the original mime type $mimeType = $mimeType ?: $this->mimeType; @@ -235,37 +239,45 @@ class SimpleImage { // Generate the image switch($mimeType) { - case 'image/gif': - imagesavealpha($this->image, true); - imagegif($this->image, null); - break; - case 'image/jpeg': - imageinterlace($this->image, true); - imagejpeg($this->image, null, $quality); - break; - case 'image/png': - imagesavealpha($this->image, true); - imagepng($this->image, null, round(9 * $quality / 100)); - break; - case 'image/webp': - // Not all versions of PHP will have webp support enabled - if(!function_exists('imagewebp')) { - throw new \Exception( - 'WEBP support is not enabled in your version of PHP.', - self::ERR_WEBP_NOT_ENABLED - ); - } - imagesavealpha($this->image, true); - imagewebp($this->image, null, $quality); - break; - case 'image/bmp': - case 'image/x-ms-bmp': - case 'image/x-windows-bmp': - imageinterlace($this->image, true); - imagebmp($this->image, null, $quality); - break; - default: - throw new \Exception('Unsupported format: ' . $mimeType, self::ERR_UNSUPPORTED_FORMAT); + + case 'image/gif': + imagesavealpha($this->image, true); + imagegif($this->image, null); + break; + case 'image/jpeg': + imageinterlace($this->image, true); + imagejpeg($this->image, null, $quality); + break; + case 'image/png': + imagesavealpha($this->image, true); + imagepng($this->image); + break; + case 'image/webp': + // Not all versions of PHP will have webp support enabled + if(!function_exists('imagewebp')) { + throw new \Exception( + 'WEBP support is not enabled in your version of PHP.', + self::ERR_WEBP_NOT_ENABLED + ); + } + imagesavealpha($this->image, true); + imagewebp($this->image, null, $quality); + break; + case 'image/bmp': + case 'image/x-ms-bmp': + case 'image/x-windows-bmp': + // Not all versions of PHP support bmp + if(!function_exists('imagebmp')) { + throw new \Exception( + 'BMP support is not available in your version of PHP.', + self::ERR_UNSUPPORTED_FORMAT + ); + } + imageinterlace($this->image, true); + imagebmp($this->image, null, $quality); + break; + default: + throw new \Exception('Unsupported format: ' . $mimeType, self::ERR_UNSUPPORTED_FORMAT); } // Stop capturing @@ -278,30 +290,27 @@ class SimpleImage { ]; } - // - // Generates a data URI. - // - // $mimeType (string) - The image format to output as a mime type (defaults to the original mime - // type). - // $quality (int) - Image quality as a percentage (default 100). - // - // Returns a string containing a data URI. - // + /** + * Generates a data URI. + * + * @param string $mimeType The image format to output as a mime type (defaults to the original mime type). + * @param integer $quality Image quality as a percentage (default 100). + * @return string Returns a string containing a data URI. + */ public function toDataUri($mimeType = null, $quality = 100) { $image = $this->generate($mimeType, $quality); return 'data:' . $image['mimeType'] . ';base64,' . base64_encode($image['data']); } - // - // Forces the image to be downloaded to the clients machine. Must be called before any output is - // sent to the screen. - // - // $filename* (string) - The filename (without path) to send to the client (e.g. 'image.jpeg'). - // $mimeType (string) - The image format to output as a mime type (defaults to the original mime - // type). - // $quality (int) - Image quality as a percentage (default 100). - // + /** + * Forces the image to be downloaded to the clients machine. Must be called before any output is sent to the screen. + * + * @param string $filename The filename (without path) to send to the client (e.g. 'image.jpeg'). + * @param string $mimeType The image format to output as a mime type (defaults to the original mime type). + * @param integer $quality Image quality as a percentage (default 100). + * @return \claviska\SimpleImage + */ public function toDownload($filename, $mimeType = null, $quality = 100) { $image = $this->generate($mimeType, $quality); @@ -318,15 +327,15 @@ class SimpleImage { return $this; } - // - // Writes the image to a file. - // - // $mimeType (string) - The image format to output as a mime type (defaults to the original mime - // type). - // $quality (int) - Image quality as a percentage (default 100). - // - // Returns a SimpleImage object. - // + /** + * Writes the image to a file. + * + * @param string $file The image format to output as a mime type (defaults to the original mime type). + * @param string $mimeType Image quality as a percentage (default 100). + * @param integer $quality Image quality as a percentage (default 100). + * @throws \Exception Thrown if failed write to file. + * @return \claviska\SimpleImage + */ public function toFile($file, $mimeType = null, $quality = 100) { $image = $this->generate($mimeType, $quality); @@ -338,15 +347,13 @@ class SimpleImage { return $this; } - // - // Outputs the image to the screen. Must be called before any output is sent to the screen. - // - // $mimeType (string) - The image format to output as a mime type (defaults to the original mime - // type). - // $quality (int) - Image quality as a percentage (default 100). - // - // Returns a SimpleImage object. - // + /** + * Outputs the image to the screen. Must be called before any output is sent to the screen. + * + * @param string $mimeType The image format to output as a mime type (defaults to the original mime type). + * @param integer $quality Image quality as a percentage (default 100). + * @return \claviska\SimpleImage + */ public function toScreen($mimeType = null, $quality = 100) { $image = $this->generate($mimeType, $quality); @@ -357,15 +364,13 @@ class SimpleImage { return $this; } - // - // Generates an image string. - // - // $mimeType (string) - The image format to output as a mime type (defaults to the original mime - // type). - // $quality (int) - Image quality as a percentage (default 100). - // - // Returns a SimpleImage object. - // + /** + * Generates an image string. + * + * @param string $mimeType The image format to output as a mime type (defaults to the original mime type). + * @param integer $quality Image quality as a percentage (default 100). + * @return string + */ public function toString($mimeType = null, $quality = 100) { return $this->generate($mimeType, $quality)['data']; } @@ -374,62 +379,61 @@ class SimpleImage { // Utilities ////////////////////////////////////////////////////////////////////////////////////////////////// - // - // Ensures a numeric value is always within the min and max range. - // - // $value* (int|float) - A numeric value to test. - // $min* (int|float) - The minimum allowed value. - // $max* (int|float) - The maximum allowed value. - // - // Returns an int|float value. - // + /** + * Ensures a numeric value is always within the min and max range. + * + * @param integer|float $value A numeric value to test. + * @param integer|float $min The minimum allowed value. + * @param integer|float $max The maximum allowed value. + * @return integer|float + */ protected static function keepWithin($value, $min, $max) { if($value < $min) return $min; if($value > $max) return $max; return $value; } - // - // Gets the image's current aspect ratio. - // - // Returns the aspect ratio as a float. - // + /** + * Gets the image's current aspect ratio. + * + * @return float Returns the aspect ratio as a float. + */ public function getAspectRatio() { return $this->getWidth() / $this->getHeight(); } - // - // Gets the image's exif data. - // - // Returns an array of exif data or null if no data is available. - // + /** + * Gets the image's exif data. + * + * @return array|NULL Returns an array of exif data or null if no data is available. + */ public function getExif() { return isset($this->exif) ? $this->exif : null; } - // - // Gets the image's current height. - // - // Returns the height as an integer. - // + /** + * Gets the image's current height. + * + * @return integer + */ public function getHeight() { return (int) imagesy($this->image); } - // - // Gets the mime type of the loaded image. - // - // Returns a mime type string. - // + /** + * Gets the mime type of the loaded image. + * + * @return string + */ public function getMimeType() { return $this->mimeType; } - // - // Gets the image's current orientation. - // - // Returns a string: 'landscape', 'portrait', or 'square' - // + /** + * Gets the image's current orientation. + * + * @return string One of the values: 'landscape', 'portrait', or 'square' + */ public function getOrientation() { $width = $this->getWidth(); $height = $this->getHeight(); @@ -439,20 +443,20 @@ class SimpleImage { return 'square'; } - // - // Gets the resolution of the image - // - // Returns the resolution as an array of integers: [96, 96] - // + /** + * Gets the resolution of the image + * + * @return mixed The resolution as an array of integers: [96, 96] + */ public function getResolution() { return imageresolution($this->image); } - // - // Gets the image's current width. - // - // Returns the width as an integer. - // + /** + * Gets the image's current width. + * + * @return integer + */ public function getWidth() { return (int) imagesx($this->image); } @@ -461,9 +465,20 @@ class SimpleImage { // Manipulation ////////////////////////////////////////////////////////////////////////////////////////////////// - // - // Same as PHP's imagecopymerge, but works with transparent images. Used internally for overlay. - // + /** + * Same as PHP's imagecopymerge, but works with transparent images. Used internally for overlay. + * + * @param resource $dstIm Destination image link resource. + * @param resource $srcIm Source image link resource. + * @param integer $dstX x-coordinate of destination point. + * @param integer $dstY y-coordinate of destination point. + * @param integer $srcX x-coordinate of source point. + * @param integer $srcY y-coordinate of source point. + * @param integer $srcW Source width. + * @param integer $srcH Source height. + * @param integer $pct + * @return boolean true if success. + */ protected static function imageCopyMergeAlpha($dstIm, $srcIm, $dstX, $dstY, $srcX, $srcY, $srcW, $srcH, $pct) { // Are we merging with transparency? if($pct < 100) { @@ -477,12 +492,12 @@ class SimpleImage { return true; } - // - // Rotates an image so the orientation will be correct based on its exif data. It is safe to call - // this method on images that don't have exif data (no changes will be made). - // - // Returns a SimpleImage object. - // + /** + * Rotates an image so the orientation will be correct based on its exif data. It is safe to call + * this method on images that don't have exif data (no changes will be made). + * + * @return \claviska\SimpleImage + */ public function autoOrient() { $exif = $this->getExif(); @@ -519,14 +534,13 @@ class SimpleImage { return $this; } - // - // Proportionally resize the image to fit inside a specific width and height. - // - // $maxWidth* (int) - The maximum width the image can be. - // $maxHeight* (int) - The maximum height the image can be. - // - // Returns a SimpleImage object. - // + /** + * Proportionally resize the image to fit inside a specific width and height. + * + * @param integer $maxWidth The maximum width the image can be. + * @param integer $maxHeight The maximum height the image can be. + * @return \claviska\SimpleImage + */ public function bestFit($maxWidth, $maxHeight) { // If the image already fits, there's nothing to do if($this->getWidth() <= $maxWidth && $this->getHeight() <= $maxHeight) { @@ -557,16 +571,15 @@ class SimpleImage { return $this->resize($width, $height); } - // - // Crop the image. - // - // $x1 - Top left x coordinate. - // $y1 - Top left y coordinate. - // $x2 - Bottom right x coordinate. - // $y2 - Bottom right x coordinate. - // - // Returns a SimpleImage object. - // + /** + * Crop the image. + * + * @param integer|float $x1 Top left x coordinate. + * @param integer|float $y1 Top left y coordinate. + * @param integer|float $x2 Bottom right x coordinate. + * @param integer|float $y2 Bottom right x coordinate. + * @return \claviska\SimpleImage + */ public function crop($x1, $y1, $x2, $y2) { // Keep crop within image dimensions $x1 = self::keepWithin($x1, 0, $this->getWidth()); @@ -585,14 +598,13 @@ class SimpleImage { return $this; } - // - // Applies a duotone filter to the image. - // - // $lightColor* (string|array) - The lightest color in the duotone. - // $darkColor* (string|array) - The darkest color in the duotone. - // - // Returns a SimpleImage object. - // + /** + * Applies a duotone filter to the image. + * + * @param string|array $lightColor The lightest color in the duotone. + * @param string|array $darkColor The darkest color in the duotone. + * @return \claviska\SimpleImage + */ function duotone($lightColor, $darkColor) { $lightColor = self::normalizeColor($lightColor); $darkColor = self::normalizeColor($darkColor); @@ -627,41 +639,38 @@ class SimpleImage { return $this; } - // - // Proportionally resize the image to a specific height. - // - // **DEPRECATED:** This method was deprecated in version 3.2.2 and will be removed in version 4.0. - // Please use `resize(null, $height)` instead. - // - // $height* (int) - The height to resize the image to. - // - // Returns a SimpleImage object. - // + /** + * Proportionally resize the image to a specific height. + * + * @deprecated + * This method was deprecated in version 3.2.2 and will be removed in version 4.0. + * Please use `resize(null, $height)` instead. + * @param integer $height + * @return \claviska\SimpleImage + */ public function fitToHeight($height) { return $this->resize(null, $height); } - // - // Proportionally resize the image to a specific width. - // - // **DEPRECATED:** This method was deprecated in version 3.2.2 and will be removed in version 4.0. - // Please use `resize($width, null)` instead. - // - // $width* (int) - The width to resize the image to. - // - // Returns a SimpleImage object. - // + /** + * Proportionally resize the image to a specific width. + * + * @deprecated + * This method was deprecated in version 3.2.2 and will be removed in version 4.0. + * Please use `resize(null, $height)` instead. + * @param integer $width The width to resize the image to. + * @return \claviska\SimpleImage + */ public function fitToWidth($width) { return $this->resize($width, null); } - // - // Flip the image horizontally or vertically. - // - // $direction* (string) - The direction to flip: x|y|both - // - // Returns a SimpleImage object. - // + /** + * Flip the image horizontally or vertically. + * + * @param string $direction The direction to flip: x|y|both. + * @return \claviska\SimpleImage + */ public function flip($direction) { switch($direction) { case 'x': @@ -678,80 +687,57 @@ class SimpleImage { return $this; } - // - // Reduces the image to a maximum number of colors. - // - // $max* (int) - The maximum number of colors to use. - // $dither (bool) - Whether or not to use a dithering effect (default true). - // - // Returns a SimpleImage object. - // + /** + * Reduces the image to a maximum number of colors. + * + * @param integer $max The maximum number of colors to use. + * @param boolean $dither Whether or not to use a dithering effect (default true). + * @return \claviska\SimpleImage + */ public function maxColors($max, $dither = true) { imagetruecolortopalette($this->image, $dither, max(1, $max)); return $this; } - // - // Place an image on top of the current image. - // - // $overlay* (string|SimpleImage) - The image to overlay. This can be a filename, a data URI, or - // a SimpleImage object. - // $anchor (string) - The anchor point: 'center', 'top', 'bottom', 'left', 'right', 'top left', - // 'top right', 'bottom left', 'bottom right' (default 'center') - // $opacity (float) - The opacity level of the overlay 0-1 (default 1). - // $xOffset (int) - Horizontal offset in pixels (default 0). - // $yOffset (int) - Vertical offset in pixels (default 0). - // - // Returns a SimpleImage object. - // - public function overlay($overlay, $anchor = 'center', $opacity = 1, $xOffset = 0, $yOffset = 0) { + /** + * Place an image on top of the current image. + * + * @param string|SimpleImage $overlay The image to overlay. This can be a filename, a data URI, or a SimpleImage object. + * @param string $anchor The anchor point: 'center', 'top', 'bottom', 'left', 'right', 'top left', 'top right', 'bottom left', 'bottom right' (default 'center'). + * @param float $opacity The opacity level of the overlay 0-1 (default 1). + * @param integer $xOffset Horizontal offset in pixels (default 0). + * @param integer $yOffset Vertical offset in pixels (default 0). + * @param bool $calcuateOffsetFromEdge Calculate Offset referring to the edges of the image (default false). + * @return \claviska\SimpleImage + */ + public function overlay($overlay, $anchor = 'center', $opacity = 1, $xOffset = 0, $yOffset = 0, $calcuateOffsetFromEdge = false) { // Load overlay image - if(!($overlay instanceof SimpleImage)) { - $overlay = new SimpleImage($overlay); - } + if(!($overlay instanceof SimpleImage)) $overlay = new SimpleImage($overlay); // Convert opacity $opacity = self::keepWithin($opacity, 0, 1) * 100; - // Determine placement - switch($anchor) { - case 'top left': - $x = $xOffset; - $y = $yOffset; - break; - case 'top right': - $x = $this->getWidth() - $overlay->getWidth() + $xOffset; - $y = $yOffset; - break; - case 'top': - $x = ($this->getWidth() / 2) - ($overlay->getWidth() / 2) + $xOffset; - $y = $yOffset; - break; - case 'bottom left': - $x = $xOffset; - $y = $this->getHeight() - $overlay->getHeight() + $yOffset; - break; - case 'bottom right': - $x = $this->getWidth() - $overlay->getWidth() + $xOffset; - $y = $this->getHeight() - $overlay->getHeight() + $yOffset; - break; - case 'bottom': - $x = ($this->getWidth() / 2) - ($overlay->getWidth() / 2) + $xOffset; - $y = $this->getHeight() - $overlay->getHeight() + $yOffset; - break; - case 'left': - $x = $xOffset; - $y = ($this->getHeight() / 2) - ($overlay->getHeight() / 2) + $yOffset; - break; - case 'right': - $x = $this->getWidth() - $overlay->getWidth() + $xOffset; - $y = ($this->getHeight() / 2) - ($overlay->getHeight() / 2) + $yOffset; - break; - default: - $x = ($this->getWidth() / 2) - ($overlay->getWidth() / 2) + $xOffset; - $y = ($this->getHeight() / 2) - ($overlay->getHeight() / 2) + $yOffset; - break; + // Get available space + $spaceX = $this->getWidth() - $overlay->getWidth(); + $spaceY = $this->getHeight() - $overlay->getHeight(); + + // Set default center + $x = ($spaceX / 2) + ($calcuateOffsetFromEdge ? 0 : $xOffset); + $y = ($spaceY / 2) + ($calcuateOffsetFromEdge ? 0 : $yOffset); + + // Determine if top|bottom + if (strpos($anchor, 'top') !== false) { + $y = $yOffset; + } elseif (strpos($anchor, 'bottom') !== false) { + $y = $spaceY + ($calcuateOffsetFromEdge ? -$yOffset : $yOffset); + } + + // Determine if left|right + if (strpos($anchor, 'left') !== false) { + $x = $xOffset; + } elseif (strpos($anchor, 'right') !== false) { + $x = $spaceX + ($calcuateOffsetFromEdge ? -$xOffset : $xOffset); } // Perform the overlay @@ -768,15 +754,13 @@ class SimpleImage { return $this; } - // - // Resize an image to the specified dimensions. If only one dimension is specified, the image will - // be resized proportionally. - // - // $width* (int) - The new image width. - // $height* (int) - The new image height. - // - // Returns a SimpleImage object. - // + /** + * Resize an image to the specified dimensions. If only one dimension is specified, the image will be resized proportionally. + * + * @param integer $width The new image width. + * @param integer $height The new image height. + * @return \claviska\SimpleImage + */ public function resize($width = null, $height = null) { // No dimentions specified if(!$width && !$height) { @@ -821,14 +805,13 @@ class SimpleImage { return $this; } - // - // Sets an image's resolution, as per https://www.php.net/manual/en/function.imageresolution.php - // - // $res_x* (int) - The horizontal resolution in DPI - // $res_y (int) - The vertical resolution in DPI - // - // Returns a SimpleImage object. - // + /** + * Sets an image's resolution, as per https://www.php.net/manual/en/function.imageresolution.php + * + * @param integer $res_x The horizontal resolution in DPI. + * @param integer $res_y The vertical resolution in DPI + * @return \claviska\SimpleImage + */ public function resolution($res_x, $res_y = null) { if(is_null($res_y)) { imageresolution($this->image, $res_x); @@ -839,15 +822,13 @@ class SimpleImage { return $this; } - // - // Rotates the image. - // - // $angle* (int) - The angle of rotation (-360 - 360). - // $backgroundColor (string|array) - The background color to use for the uncovered zone area - // after rotation (default 'transparent'). - // - // Returns a SimpleImage object. - // + /** + * Rotates the image. + * + * @param integer $angle The angle of rotation (-360 - 360). + * @param string|array $backgroundColor The background color to use for the uncovered zone area after rotation (default 'transparent'). + * @return \claviska\SimpleImage + */ public function rotate($angle, $backgroundColor = 'transparent') { // Rotate the image on a canvas with the desired background color $backgroundColor = $this->allocateColor($backgroundColor); @@ -862,28 +843,30 @@ class SimpleImage { return $this; } - // - // Adds text to the image. - // - // $text* (string) - The desired text. - // $options (array) - An array of options. - // - fontFile* (string) - The TrueType (or compatible) font file to use. - // - size (int) - The size of the font in pixels (default 12). - // - color (string|array) - The text color (default black). - // - anchor (string) - The anchor point: 'center', 'top', 'bottom', 'left', 'right', - // 'top left', 'top right', 'bottom left', 'bottom right' (default 'center'). - // - xOffset (int) - The horizontal offset in pixels (default 0). - // - yOffset (int) - The vertical offset in pixels (default 0). - // - shadow (array) - Text shadow params. - // - x* (int) - Horizontal offset in pixels. - // - y* (int) - Vertical offset in pixels. - // - color* (string|array) - The text shadow color. - // $boundary (array) - If passed, this variable will contain an array with coordinates that - // surround the text: [x1, y1, x2, y2, width, height]. This can be used for calculating the - // text's position after it gets added to the image. - // - // Returns a SimpleImage object. - // + /** + * Adds text to the image. + * + * @param string $text The desired text. + * @param array $options + * An array of options. + * - fontFile* (string) - The TrueType (or compatible) font file to use. + * - size (integer) - The size of the font in pixels (default 12). + * - color (string|array) - The text color (default black). + * - anchor (string) - The anchor point: 'center', 'top', 'bottom', 'left', 'right', 'top left', 'top right', 'bottom left', 'bottom right' (default 'center'). + * - xOffset (integer) - The horizontal offset in pixels (default 0). + * - yOffset (integer) - The vertical offset in pixels (default 0). + * - shadow (array) - Text shadow params. + * - x* (integer) - Horizontal offset in pixels. + * - y* (integer) - Vertical offset in pixels. + * - color* (string|array) - The text shadow color. + * - $calcuateOffsetFromEdge (bool) - Calculate Offset referring to the edges of the image (default false). + * - $baselineAlign (bool) - Align the text font with the baseline. (default true). + * @param array $boundary + * If passed, this variable will contain an array with coordinates that surround the text: [x1, y1, x2, y2, width, height]. + * This can be used for calculating the text's position after it gets added to the image. + * @throws \Exception + * @return \claviska\SimpleImage + */ public function text($text, $options, &$boundary = null) { // Check for freetype support if(!function_exists('imagettftext')) { @@ -901,7 +884,9 @@ class SimpleImage { 'anchor' => 'center', 'xOffset' => 0, 'yOffset' => 0, - 'shadow' => null + 'shadow' => null, + 'calcuateOffsetFromEdge' => false, + 'baselineAlign' => true ], $options); // Extract and normalize options @@ -911,6 +896,8 @@ class SimpleImage { $anchor = $options['anchor']; $xOffset = $options['xOffset']; $yOffset = $options['yOffset']; + $calcuateOffsetFromEdge = $options['calcuateOffsetFromEdge']; + $baselineAlign = $options['baselineAlign']; $angle = 0; // Calculate the bounding box dimensions @@ -919,27 +906,50 @@ class SimpleImage { // different heights for different strings of the same font size. For example, 'type' will often // be taller than 'text' because the former has a descending letter. // - // To compensate for this, we create two bounding boxes: one to measure the cap height and - // another to measure the descender height. Based on that, we can adjust the text vertically - // to appear inside the box with a reasonable amount of consistency. + // To compensate for this, we created a temporary bounding box to measure the maximum height + // that the font used can occupy. Based on this, we can adjust the text vertically so that it + // appears inside the box with a good consistency. // // See: https://github.com/claviska/SimpleImage/issues/165 // - $box = imagettfbbox($size, $angle, $fontFile, $text); - if(!$box) { - throw new \Exception("Unable to load font file: $fontFile", self::ERR_FONT_FILE); - } - $boxWidth = abs($box[6] - $box[2]); - $boxHeight = $options['size']; - // Determine cap height - $box = imagettfbbox($size, $angle, $fontFile, 'X'); - $capHeight = abs($box[7] - $box[1]); + $boxText = imagettfbbox($size, $angle, $fontFile, $text); + if(!$boxText) throw new \Exception("Unable to load font file: $fontFile", self::ERR_FONT_FILE); - // Determine descender height - $box = imagettfbbox($size, $angle, $fontFile, 'X Qgjpqy'); - $fullHeight = abs($box[7] - $box[1]); - $descenderHeight = $fullHeight - $capHeight; + $boxWidth = abs($boxText[4] - $boxText[0]); + $boxHeight = abs($boxText[5] - $boxText[1]); + + // Calculate Offset referring to the edges of the image. + // Just invert the value for bottom|right; + if ($calcuateOffsetFromEdge == true): + if (strpos($anchor, 'bottom') !== false) $yOffset *= -1; + if (strpos($anchor, 'right') !== false) $xOffset *= -1; + endif; + + // Align the text font with the baseline. + // I use $yOffset to inject the vertical alignment correction value. + if ($baselineAlign == true): + // Create a temporary box to obtain the maximum height that this font can use. + $boxFull = imagettfbbox($size, $angle, $fontFile, 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890'); + // Based on the maximum height, the text is aligned. + if (strpos($anchor, 'bottom') !== false): + $yOffset -= $boxFull[1]; + elseif (strpos($anchor, 'top') !== false): + $yOffset += abs($boxFull[5]) - $boxHeight; + else: // center + $boxFullHeight = abs($boxFull[1]) + abs($boxFull[5]); + $yOffset += ($boxFullHeight/2) - ($boxHeight/2) - abs($boxFull[1]); + endif; + + else: + // Prevents fonts rendered outside the box boundary from being cut. + // Example: 'Scriptina' font, some letters invade the space of the previous or subsequent letter. + $yOffset -= $boxText[1]; + endif; + + // Prevents fonts rendered outside the box boundary from being cut. + // Example: 'Scriptina' font, some letters invade the space of the previous or subsequent letter. + $xOffset -= $boxText[0]; // Determine position switch($anchor) { @@ -957,15 +967,15 @@ class SimpleImage { break; case 'bottom left': $x = $xOffset; - $y = $this->getHeight() - $boxHeight + $yOffset + $boxHeight; + $y = $this->getHeight() + $yOffset ; break; case 'bottom right': $x = $this->getWidth() - $boxWidth + $xOffset; - $y = $this->getHeight() - $boxHeight + $yOffset + $boxHeight; + $y = $this->getHeight() + $yOffset; break; case 'bottom': $x = ($this->getWidth() / 2) - ($boxWidth / 2) + $xOffset; - $y = $this->getHeight() - $boxHeight + $yOffset + $boxHeight; + $y = $this->getHeight() + $yOffset; break; case 'left': $x = $xOffset; @@ -980,16 +990,15 @@ class SimpleImage { $y = ($this->getHeight() / 2) - (($boxHeight / 2) - $boxHeight) + $yOffset; break; } - $x = (int) round($x); $y = (int) round($y); // Pass the boundary back by reference $boundary = [ - 'x1' => $x, - 'y1' => $y - $boxHeight, // $y is the baseline, not the top! - 'x2' => $x + $boxWidth, - 'y2' => $y, + 'x1' => $x + $boxText[0], + 'y1' => $y + $boxText[1] - $boxHeight, // $y is the baseline, not the top! + 'x2' => $x + $boxWidth + $boxText[0], + 'y2' => $y + $boxText[1], 'width' => $boxWidth, 'height' => $boxHeight ]; @@ -1001,7 +1010,7 @@ class SimpleImage { $size, $angle, $x + $options['shadow']['x'], - $y + $options['shadow']['y'] - $descenderHeight, + $y + $options['shadow']['y'], $this->allocateColor($options['shadow']['color']), $fontFile, $text @@ -1009,23 +1018,21 @@ class SimpleImage { } // Draw the text - imagettftext($this->image, $size, $angle, $x, $y - $descenderHeight, $color, $fontFile, $text); + imagettftext($this->image, $size, $angle, $x, $y, $color, $fontFile, $text); return $this; } - // - // Creates a thumbnail image. This function attempts to get the image as close to the provided - // dimensions as possible, then crops the remaining overflow to force the desired size. Useful - // for generating thumbnail images. - // - // $width* (int) - The thumbnail width. - // $height* (int) - The thumbnail height. - // $anchor (string) - The anchor point: 'center', 'top', 'bottom', 'left', 'right', 'top left', - // 'top right', 'bottom left', 'bottom right' (default 'center'). - // - // Returns a SimpleImage object. - // + /** + * Creates a thumbnail image. This function attempts to get the image as close to the provided + * dimensions as possible, then crops the remaining overflow to force the desired size. Useful + * for generating thumbnail images. + * + * @param integer $width The thumbnail width. + * @param integer $height The thumbnail height. + * @param string $anchor The anchor point: 'center', 'top', 'bottom', 'left', 'right', 'top left', 'top right', 'bottom left', 'bottom right' (default 'center'). + * @return \claviska\SimpleImage + */ public function thumbnail($width, $height, $anchor = 'center') { // Determine aspect ratios $currentRatio = $this->getHeight() / $this->getWidth(); @@ -1103,20 +1110,19 @@ class SimpleImage { // Drawing ////////////////////////////////////////////////////////////////////////////////////////////////// - // - // Draws an arc. - // - // $x* (int) - The x coordinate of the arc's center. - // $y* (int) - The y coordinate of the arc's center. - // $width* (int) - The width of the arc. - // $height* (int) - The height of the arc. - // $start* (int) - The start of the arc in degrees. - // $end* (int) - The end of the arc in degrees. - // $color* (string|array) - The arc color. - // $thickness (int|string) - Line thickness in pixels or 'filled' (default 1). - // - // Returns a SimpleImage object. - // + /** + * Draws an arc. + * + * @param integer $x The x coordinate of the arc's center. + * @param integer $y The y coordinate of the arc's center. + * @param integer $width The width of the arc. + * @param integer $height The height of the arc. + * @param integer $start The start of the arc in degrees. + * @param integer $end The end of the arc in degrees. + * @param string|array $color The arc color. + * @param integer|string $thickness Line thickness in pixels or 'filled' (default 1). + * @return \claviska\SimpleImage + */ public function arc($x, $y, $width, $height, $start, $end, $color, $thickness = 1) { // Allocate the color $color = $this->allocateColor($color); @@ -1133,14 +1139,13 @@ class SimpleImage { return $this; } - // - // Draws a border around the image. - // - // $color* (string|array) - The border color. - // $thickness (int) - The thickness of the border (default 1). - // - // Returns a SimpleImage object. - // + /** + * Draws a border around the image. + * + * @param string|array $color The border color. + * @param integer $thickness The thickness of the border (default 1). + * @return \claviska\SimpleImage + */ public function border($color, $thickness = 1) { $x1 = 0; $y1 = 0; @@ -1155,15 +1160,14 @@ class SimpleImage { return $this; } - // - // Draws a single pixel dot. - // - // $x* (int) - The x coordinate of the dot. - // $y* (int) - The y coordinate of the dot. - // $color* (string|array) - The dot color. - // - // Returns a SimpleImage object. - // + /** + * Draws a single pixel dot. + * + * @param integer $x The x coordinate of the dot. + * @param integer $y The y coordinate of the dot. + * @param string|array $color The dot color. + * @return \claviska\SimpleImage + */ public function dot($x, $y, $color) { $color = $this->allocateColor($color); imagesetpixel($this->image, $x, $y, $color); @@ -1171,18 +1175,17 @@ class SimpleImage { return $this; } - // - // Draws an ellipse. - // - // $x* (int) - The x coordinate of the center. - // $y* (int) - The y coordinate of the center. - // $width* (int) - The ellipse width. - // $height* (int) - The ellipse height. - // $color* (string|array) - The ellipse color. - // $thickness (int|string) - Line thickness in pixels or 'filled' (default 1). - // - // Returns a SimpleImage object. - // + /** + * Draws an ellipse. + * + * @param integer $x The x coordinate of the center. + * @param integer $y The y coordinate of the center. + * @param integer $width The ellipse width. + * @param integer $height The ellipse height. + * @param string|array $color The ellipse color. + * @param integer|array $thickness Line thickness in pixels or 'filled' (default 1). + * @return \claviska\SimpleImage + */ public function ellipse($x, $y, $width, $height, $color, $thickness = 1) { // Allocate the color $color = $this->allocateColor($color); @@ -1203,13 +1206,12 @@ class SimpleImage { return $this; } - // - // Fills the image with a solid color. - // - // $color (string|array) - The fill color. - // - // Returns a SimpleImage object. - // + /** + * Fills the image with a solid color. + * + * @param string|array $color The fill color. + * @return \claviska\SimpleImage + */ public function fill($color) { // Draw a filled rectangle over the entire image $this->rectangle(0, 0, $this->getWidth(), $this->getHeight(), 'white', 'filled'); @@ -1221,18 +1223,17 @@ class SimpleImage { return $this; } - // - // Draws a line. - // - // $x1* (int) - The x coordinate for the first point. - // $y1* (int) - The y coordinate for the first point. - // $x2* (int) - The x coordinate for the second point. - // $y2* (int) - The y coordinate for the second point. - // $color (string|array) - The line color. - // $thickness (int) - The line thickness (default 1). - // - // Returns a SimpleImage object. - // + /** + * Draws a line. + * + * @param integer $x1 The x coordinate for the first point. + * @param integer $y1 The y coordinate for the first point. + * @param integer $x2 The x coordinate for the second point. + * @param integer $y2 The y coordinate for the second point. + * @param string|array $color The line color. + * @param integer $thickness The line thickness (default 1). + * @return \claviska\SimpleImage + */ public function line($x1, $y1, $x2, $y2, $color, $thickness = 1) { // Allocate the color $color = $this->allocateColor($color); @@ -1244,20 +1245,21 @@ class SimpleImage { return $this; } - // - // Draws a polygon. - // - // $vertices* (array) - The polygon's vertices in an array of x/y arrays. Example: - // [ - // ['x' => x1, 'y' => y1], - // ['x' => x2, 'y' => y2], - // ['x' => xN, 'y' => yN] - // ] - // $color* (string|array) - The polygon color. - // $thickness (int|string) - Line thickness in pixels or 'filled' (default 1). - // - // Returns a SimpleImage object. - // + /** + * Draws a polygon. + * + * @param array $vertices + * The polygon's vertices in an array of x/y arrays. + * Example: + * [ + * ['x' => x1, 'y' => y1], + * ['x' => x2, 'y' => y2], + * ['x' => xN, 'y' => yN] + * ] + * @param string|array $color The polygon color. + * @param integer|array $thickness Line thickness in pixels or 'filled' (default 1). + * @return \claviska\SimpleImage + */ public function polygon($vertices, $color, $thickness = 1) { // Allocate the color $color = $this->allocateColor($color); @@ -1281,18 +1283,17 @@ class SimpleImage { return $this; } - // - // Draws a rectangle. - // - // $x1* (int) - The upper left x coordinate. - // $y1* (int) - The upper left y coordinate. - // $x2* (int) - The bottom right x coordinate. - // $y2* (int) - The bottom right y coordinate. - // $color* (string|array) - The rectangle color. - // $thickness (int|string) - Line thickness in pixels or 'filled' (default 1). - // - // Returns a SimpleImage object. - // + /** + * Draws a rectangle. + * + * @param integer $x1 The upper left x coordinate. + * @param integer $y1 The upper left y coordinate. + * @param integer $x2 The bottom right x coordinate. + * @param integer $y2 The bottom right y coordinate. + * @param string|array $color The rectangle color. + * @param integer|array $thickness Line thickness in pixels or 'filled' (default 1). + * @return \claviska\SimpleImage + */ public function rectangle($x1, $y1, $x2, $y2, $color, $thickness = 1) { // Allocate the color $color = $this->allocateColor($color); @@ -1309,58 +1310,97 @@ class SimpleImage { return $this; } - // - // Draws a rounded rectangle. - // - // $x1* (int) - The upper left x coordinate. - // $y1* (int) - The upper left y coordinate. - // $x2* (int) - The bottom right x coordinate. - // $y2* (int) - The bottom right y coordinate. - // $radius* (int) - The border radius in pixels. - // $color* (string|array) - The rectangle color. - // $thickness (int|string) - Line thickness in pixels or 'filled' (default 1). - // - // Returns a SimpleImage object. - // + /** + * Draws a rounded rectangle. + * + * @param integer $x1 The upper left x coordinate. + * @param integer $y1 The upper left y coordinate. + * @param integer $x2 The bottom right x coordinate. + * @param integer $y2 The bottom right y coordinate. + * @param integer $radius The border radius in pixels. + * @param string|array $color The rectangle color. + * @param integer|array $thickness Line thickness in pixels or 'filled' (default 1). + * @return \claviska\SimpleImage + */ public function roundedRectangle($x1, $y1, $x2, $y2, $radius, $color, $thickness = 1) { if($thickness === 'filled') { // Draw the filled rectangle without edges $this->rectangle($x1 + $radius + 1, $y1, $x2 - $radius - 1, $y2, $color, 'filled'); $this->rectangle($x1, $y1 + $radius + 1, $x1 + $radius, $y2 - $radius - 1, $color, 'filled'); $this->rectangle($x2 - $radius, $y1 + $radius + 1, $x2, $y2 - $radius - 1, $color, 'filled'); + // Fill in the edges with arcs $this->arc($x1 + $radius, $y1 + $radius, $radius * 2, $radius * 2, 180, 270, $color, 'filled'); $this->arc($x2 - $radius, $y1 + $radius, $radius * 2, $radius * 2, 270, 360, $color, 'filled'); $this->arc($x1 + $radius, $y2 - $radius, $radius * 2, $radius * 2, 90, 180, $color, 'filled'); $this->arc($x2 - $radius, $y2 - $radius, $radius * 2, $radius * 2, 360, 90, $color, 'filled'); } else { - // Draw the rectangle outline without edges - $this->line($x1 + $radius, $y1, $x2 - $radius, $y1, $color, $thickness); - $this->line($x1 + $radius, $y2, $x2 - $radius, $y2, $color, $thickness); - $this->line($x1, $y1 + $radius, $x1, $y2 - $radius, $color, $thickness); - $this->line($x2, $y1 + $radius, $x2, $y2 - $radius, $color, $thickness); - // Fill in the edges with arcs - $this->arc($x1 + $radius, $y1 + $radius, $radius * 2, $radius * 2, 180, 270, $color, $thickness); - $this->arc($x2 - $radius, $y1 + $radius, $radius * 2, $radius * 2, 270, 360, $color, $thickness); - $this->arc($x1 + $radius, $y2 - $radius, $radius * 2, $radius * 2, 90, 180, $color, $thickness); - $this->arc($x2 - $radius, $y2 - $radius, $radius * 2, $radius * 2, 360, 90, $color, $thickness); + $offset = $thickness / 2; + $x1 -= $offset; + $x2 += $offset; + $y1 -= $offset; + $y2 += $offset; + $radius = self::keepWithin($radius, 0, min(($x2 - $x1) / 2, ($y2 - $y1) / 2 ) - 1); + $radius = floor($radius); + $thickness = self::keepWithin($thickness, 1, min(($x2 - $x1) / 2, ($y2 - $y1) / 2)); + + // New temp image + $tempImage = new SimpleImage(); + $tempImage->fromNew($this->getWidth(), $this->getHeight(), 'transparent'); + + // Draw a large rectangle filled with $color + $tempImage->roundedRectangle($x1, $y1, $x2, $y2, $radius, $color,'filled'); + + // Draw a smaller rectangle filled with red|blue (-$thickness pixels on each side) + $tempColor = ($color == 'red') ? 'blue' : 'red'; + $radius = $radius - $thickness; + $radius = self::keepWithin($radius, 0, $radius); + $tempImage->roundedRectangle( + $x1 + $thickness, + $y1 + $thickness, + $x2 - $thickness, + $y2 - $thickness, + $radius, + $tempColor, + 'filled' + ); + + // Replace the color of the smaller rectangle with 'transparent' + $tempImage->excludeInsideColor(($x2 + $x1) / 2, ($y2 + $y1) / 2, $color); + + // Apply the temp image + $this->overlay($tempImage); } return $this; } + /** + * Exclude inside color. + * Used only for roundedRectangle() + * + * @param number $x certer x of rectangle. + * @param number $y certer y of rectangle. + * @param string|array $borderColor The color of border. + */ + private function excludeInsideColor($x, $y, $borderColor) { + $borderColor = $this->allocateColor($borderColor); + $transparent = $this->allocateColor('transparent'); + imagefilltoborder($this->image, $x, $y, $borderColor, $transparent); + return $this; + } + ////////////////////////////////////////////////////////////////////////////////////////////////// // Filters ////////////////////////////////////////////////////////////////////////////////////////////////// - // - // Applies the blur filter. - // - // $type (string) - The blur algorithm to use: 'selective', 'gaussian' (default 'gaussian'). - // $passes (int) - The number of time to apply the filter, enhancing the effect (default 1). - // - // Returns a SimpleImage object. - // + /** + * Applies the blur filter. + * + * @param string $type The blur algorithm to use: 'selective', 'gaussian' (default 'gaussian'). + * @param number $passes The number of time to apply the filter, enhancing the effect (default 1). + * @return \claviska\SimpleImage + */ public function blur($type = 'selective', $passes = 1) { $filter = $type === 'gaussian' ? IMG_FILTER_GAUSSIAN_BLUR : IMG_FILTER_SELECTIVE_BLUR; @@ -1371,13 +1411,12 @@ class SimpleImage { return $this; } - // - // Applies the brightness filter to brighten the image. - // - // $percentage* (int) - Percentage to brighten the image (0 - 100). - // - // Returns a SimpleImage object. - // + /** + * Applies the brightness filter to brighten the image. + * + * @param integer $percentage Percentage to brighten the image (0 - 100). + * @return \claviska\SimpleImage + */ public function brighten($percentage) { $percentage = self::keepWithin(255 * $percentage / 100, 0, 255); @@ -1386,13 +1425,12 @@ class SimpleImage { return $this; } - // - // Applies the colorize filter. - // - // $color* (string|array) - The filter color. - // - // Returns a SimpleImage object. - // + /** + * Applies the colorize filter. + * + * @param string|array $color The filter color. + * @return \claviska\SimpleImage + */ public function colorize($color) { $color = self::normalizeColor($color); @@ -1408,26 +1446,24 @@ class SimpleImage { return $this; } - // - // Applies the contrast filter. - // - // $percentage* (int) - Percentage to adjust (-100 - 100). - // - // Returns a SimpleImage object. - // + /** + * Applies the contrast filter. + * + * @param integer $percentage Percentage to adjust (-100 - 100). + * @return \claviska\SimpleImage + */ public function contrast($percentage) { imagefilter($this->image, IMG_FILTER_CONTRAST, self::keepWithin($percentage, -100, 100)); return $this; } - // - // Applies the brightness filter to darken the image. - // - // $percentage* (int) - Percentage to darken the image (0 - 100). - // - // Returns a SimpleImage object. - // + /** + * Applies the brightness filter to darken the image. + * + * @param integer $percentage Percentage to darken the image (0 - 100). + * @return \claviska\SimpleImage + */ public function darken($percentage) { $percentage = self::keepWithin(255 * $percentage / 100, 0, 255); @@ -1436,57 +1472,56 @@ class SimpleImage { return $this; } - // - // Applies the desaturate (grayscale) filter. - // - // Returns a SimpleImage object. - // + /** + * Applies the desaturate (grayscale) filter. + * + * @return \claviska\SimpleImage + */ public function desaturate() { imagefilter($this->image, IMG_FILTER_GRAYSCALE); return $this; } - // - // Applies the edge detect filter. - // - // Returns a SimpleImage object. - // + /** + * Applies the edge detect filter. + * + * @return \claviska\SimpleImage + */ public function edgeDetect() { imagefilter($this->image, IMG_FILTER_EDGEDETECT); return $this; } - // - // Applies the emboss filter. - // - // Returns a SimpleImage object. - // + /** + * Applies the emboss filter. + * + * @return \claviska\SimpleImage + */ public function emboss() { imagefilter($this->image, IMG_FILTER_EMBOSS); return $this; } - // - // Inverts the image's colors. - // - // Returns a SimpleImage object. - // + /** + * Inverts the image's colors. + * + * @return \claviska\SimpleImage + */ public function invert() { imagefilter($this->image, IMG_FILTER_NEGATE); return $this; } - // - // Changes the image's opacity level. - // - // $opacity* (float) - The desired opacity level (0 - 1). - // - // Returns a SimpleImage object. - // + /** + * Changes the image's opacity level. + * + * @param float $opacity The desired opacity level (0 - 1). + * @return \claviska\SimpleImage + */ public function opacity($opacity) { // Create a transparent image $newImage = new SimpleImage(); @@ -1506,24 +1541,23 @@ class SimpleImage { return $this; } - // - // Applies the pixelate filter. - // - // $size (int) - The size of the blocks in pixels (default 10). - // - // Returns a SimpleImage object. - // + /** + * Applies the pixelate filter. + * + * @param integer $size The size of the blocks in pixels (default 10). + * @return \claviska\SimpleImage + */ public function pixelate($size = 10) { imagefilter($this->image, IMG_FILTER_PIXELATE, $size, true); return $this; } - // - // Simulates a sepia effect by desaturating the image and applying a sepia tone. - // - // Returns a SimpleImage object. - // + /** + * Simulates a sepia effect by desaturating the image and applying a sepia tone. + * + * @return \claviska\SimpleImage + */ public function sepia() { imagefilter($this->image, IMG_FILTER_GRAYSCALE); imagefilter($this->image, IMG_FILTER_COLORIZE, 70, 35, 0); @@ -1531,13 +1565,12 @@ class SimpleImage { return $this; } - // - // Sharpens the image. - // - // $amount (int) - Sharpening amount (default 50) - // - // Returns a SimpleImage object. - // + /** + * Sharpens the image. + * + * @param integer $amount Sharpening amount (default 50). + * @return \claviska\SimpleImage + */ public function sharpen($amount = 50) { // Normalize amount $amount = max(1, min(100, $amount)) / 100; @@ -1554,11 +1587,11 @@ class SimpleImage { return $this; } - // - // Applies the mean remove filter to produce a sketch effect. - // - // Returns a SimpleImage object. - // + /** + * Applies the mean remove filter to produce a sketch effect. + * + * @return \claviska\SimpleImage + */ public function sketch() { imagefilter($this->image, IMG_FILTER_MEAN_REMOVAL); @@ -1569,14 +1602,12 @@ class SimpleImage { // Color utilities ////////////////////////////////////////////////////////////////////////////////////////////////// - // - // Converts a "friendly color" into a color identifier for use with GD's image functions. - // - // $image (resource) - The target image. - // $color (string|array) - The color to allocate. - // - // Returns a color identifier. - // + /** + * Converts a "friendly color" into a color identifier for use with GD's image functions. + * + * @param string|array $color The color to allocate. + * @return integer + */ protected function allocateColor($color) { $color = self::normalizeColor($color); @@ -1603,17 +1634,16 @@ class SimpleImage { ); } - // - // Adjusts a color by increasing/decreasing red/green/blue/alpha values independently. - // - // $color* (string|array) - The color to adjust. - // $red* (int) - Red adjustment (-255 - 255). - // $green* (int) - Green adjustment (-255 - 255). - // $blue* (int) - Blue adjustment (-255 - 255). - // $alpha* (float) - Alpha adjustment (-1 - 1). - // - // Returns an RGBA color array. - // + /** + * Adjusts a color by increasing/decreasing red/green/blue/alpha values independently. + * + * @param string|array $color The color to adjust. + * @param integer $red Red adjustment (-255 - 255). + * @param integer $green Green adjustment (-255 - 255). + * @param integer $blue Blue adjustment (-255 - 255). + * @param integer $alpha Alpha adjustment (-1 - 1). + * @return integer[] An RGBA color array. + */ public static function adjustColor($color, $red, $green, $blue, $alpha) { // Normalize to RGBA $color = self::normalizeColor($color); @@ -1627,31 +1657,31 @@ class SimpleImage { ]); } - // - // Darkens a color. - // - // $color* (string|array) - The color to darken. - // $amount* (int) - Amount to darken (0 - 255). - // - // Returns an RGBA color array. - // + /** + * Darkens a color. + * + * @param string|array $color The color to darken. + * @param integer $amount Amount to darken (0 - 255). + * @return integer[] An RGBA color array. + */ public static function darkenColor($color, $amount) { return self::adjustColor($color, -$amount, -$amount, -$amount, 0); } - // - // Extracts colors from an image like a human would do.™ This method requires the third-party - // library \League\ColorExtractor. If you're using Composer, it will be installed for you - // automatically. - // - // $count (int) - The max number of colors to extract (default 5). - // $backgroundColor (string|array) - By default any pixel with alpha value greater than zero will - // be discarded. This is because transparent colors are not perceived as is. For example, fully - // transparent black would be seen white on a white background. So if you want to take - // transparency into account, you have to specify a default background color. - // - // Returns an array of RGBA colors arrays. - // + /** + * Extracts colors from an image like a human would do.™ This method requires the third-party + * library \League\ColorExtractor. If you're using Composer, it will be installed for you + * automatically. + * + * @param integer $count The max number of colors to extract (default 5). + * @param string|array $backgroundColor + * By default any pixel with alpha value greater than zero will + * be discarded. This is because transparent colors are not perceived as is. For example, fully + * transparent black would be seen white on a white background. So if you want to take + * transparency into account, you have to specify a default background color. + * @throws \Exception Thrown if library \League\ColorExtractor is missing. + * @return integer[] An array of RGBA colors arrays. + */ public function extractColors($count = 5, $backgroundColor = null) { // Check for required library if(!class_exists('\League\ColorExtractor\ColorExtractor')) { @@ -1684,14 +1714,13 @@ class SimpleImage { return $colors; } - // - // Gets the RGBA value of a single pixel. - // - // $x* (int) - The horizontal position of the pixel. - // $y* (int) - The vertical position of the pixel. - // - // Returns an RGBA color array or false if the x/y position is off the canvas. - // + /** + * Gets the RGBA value of a single pixel. + * + * @param integer $x The horizontal position of the pixel. + * @param integer $y The vertical position of the pixel. + * @return integer[] An RGBA color array or false if the x/y position is off the canvas. + */ public function getColorAt($x, $y) { // Coordinates must be on the canvas if($x < 0 || $x > $this->getWidth() || $y < 0 || $y > $this->getHeight()) { @@ -1706,29 +1735,28 @@ class SimpleImage { return $rgba; } - // - // Lightens a color. - // - // $color* (string|array) - The color to lighten. - // $amount* (int) - Amount to darken (0 - 255). - // - // Returns an RGBA color array. - // + /** + * Lightens a color. + * + * @param string|array $color The color to lighten. + * @param integer $amount Amount to lighten (0 - 255). + * @return integer[] An RGBA color array. + */ public static function lightenColor($color, $amount) { return self::adjustColor($color, $amount, $amount, $amount, 0); } - // - // Normalizes a hex or array color value to a well-formatted RGBA array. - // - // $color* (string|array) - A CSS color name, hex string, or an array [red, green, blue, alpha]. - // You can pipe alpha transparency through hex strings and color names. For example: - // - // #fff|0.50 <-- 50% white - // red|0.25 <-- 25% red - // - // Returns an array: [red, green, blue, alpha] - // + /** + * Normalizes a hex or array color value to a well-formatted RGBA array. + * + * @param string|array $color + * A CSS color name, hex string, or an array [red, green, blue, alpha]. + * You can pipe alpha transparency through hex strings and color names. For example: + * #fff|0.50 <-- 50% white + * red|0.25 <-- 25% red + * @throws \Exception Thrown if color value is invalid. + * @return array [red, green, blue, alpha]. + */ public static function normalizeColor($color) { // 140 CSS color names and hex values $cssColors = [ diff --git a/kirby/vendor/composer/ClassLoader.php b/kirby/vendor/composer/ClassLoader.php index 03b9bb9..1a58957 100755 --- a/kirby/vendor/composer/ClassLoader.php +++ b/kirby/vendor/composer/ClassLoader.php @@ -37,8 +37,8 @@ namespace Composer\Autoload; * * @author Fabien Potencier * @author Jordi Boggiano - * @see http://www.php-fig.org/psr/psr-0/ - * @see http://www.php-fig.org/psr/psr-4/ + * @see https://www.php-fig.org/psr/psr-0/ + * @see https://www.php-fig.org/psr/psr-4/ */ class ClassLoader { diff --git a/kirby/vendor/composer/InstalledVersions.php b/kirby/vendor/composer/InstalledVersions.php new file mode 100755 index 0000000..203ae8b --- /dev/null +++ b/kirby/vendor/composer/InstalledVersions.php @@ -0,0 +1,331 @@ + + array ( + 'pretty_version' => '3.5.0-rc.5', + 'version' => '3.5.0.0-RC5', + 'aliases' => + array ( + ), + 'reference' => NULL, + 'name' => 'getkirby/cms', + ), + 'versions' => + array ( + 'claviska/simpleimage' => + array ( + 'pretty_version' => '3.5.1', + 'version' => '3.5.1.0', + 'aliases' => + array ( + ), + 'reference' => 'ab2ab8a4672738ab77b39b00922ee4e79aeadb11', + ), + 'filp/whoops' => + array ( + 'pretty_version' => '2.9.1', + 'version' => '2.9.1.0', + 'aliases' => + array ( + ), + 'reference' => '307fb34a5ab697461ec4c9db865b20ff2fd40771', + ), + 'getkirby/cms' => + array ( + 'pretty_version' => '3.5.0-rc.5', + 'version' => '3.5.0.0-RC5', + 'aliases' => + array ( + ), + 'reference' => NULL, + ), + 'getkirby/composer-installer' => + array ( + 'pretty_version' => '1.2.0', + 'version' => '1.2.0.0', + 'aliases' => + array ( + ), + 'reference' => '240a8b2c275d61b66601feb58222b7d34bc6cf1e', + ), + 'laminas/laminas-escaper' => + array ( + 'pretty_version' => '2.7.0', + 'version' => '2.7.0.0', + 'aliases' => + array ( + ), + 'reference' => '5e04bc5ae5990b17159d79d331055e2c645e5cc5', + ), + 'laminas/laminas-zendframework-bridge' => + array ( + 'pretty_version' => '1.1.1', + 'version' => '1.1.1.0', + 'aliases' => + array ( + ), + 'reference' => '6ede70583e101030bcace4dcddd648f760ddf642', + ), + 'league/color-extractor' => + array ( + 'pretty_version' => '0.3.2', + 'version' => '0.3.2.0', + 'aliases' => + array ( + ), + 'reference' => '837086ec60f50c84c611c613963e4ad2e2aec806', + ), + 'matthecat/colorextractor' => + array ( + 'replaced' => + array ( + 0 => '*', + ), + ), + 'michelf/php-smartypants' => + array ( + 'pretty_version' => '1.8.1', + 'version' => '1.8.1.0', + 'aliases' => + array ( + ), + 'reference' => '47d17c90a4dfd0ccf1f87e25c65e6c8012415aad', + ), + 'mustangostang/spyc' => + array ( + 'pretty_version' => '0.6.3', + 'version' => '0.6.3.0', + 'aliases' => + array ( + ), + 'reference' => '4627c838b16550b666d15aeae1e5289dd5b77da0', + ), + 'phpmailer/phpmailer' => + array ( + 'pretty_version' => 'v6.2.0', + 'version' => '6.2.0.0', + 'aliases' => + array ( + ), + 'reference' => 'e38888a75c070304ca5514197d4847a59a5c853f', + ), + 'psr/log' => + array ( + 'pretty_version' => '1.1.3', + 'version' => '1.1.3.0', + 'aliases' => + array ( + ), + 'reference' => '0f73288fd15629204f9d42b7055f72dacbe811fc', + ), + 'symfony/polyfill-mbstring' => + array ( + 'pretty_version' => 'v1.20.0', + 'version' => '1.20.0.0', + 'aliases' => + array ( + ), + 'reference' => '39d483bdf39be819deabf04ec872eb0b2410b531', + ), + 'true/punycode' => + array ( + 'pretty_version' => 'v2.1.1', + 'version' => '2.1.1.0', + 'aliases' => + array ( + ), + 'reference' => 'a4d0c11a36dd7f4e7cd7096076cab6d3378a071e', + ), + 'zendframework/zend-escaper' => + array ( + 'replaced' => + array ( + 0 => '^2.6.1', + ), + ), + ), +); + + + + + + + +public static function getInstalledPackages() +{ +return array_keys(self::$installed['versions']); +} + + + + + + + + + +public static function isInstalled($packageName) +{ +return isset(self::$installed['versions'][$packageName]); +} + + + + + + + + + + + + + + +public static function satisfies(VersionParser $parser, $packageName, $constraint) +{ +$constraint = $parser->parseConstraints($constraint); +$provided = $parser->parseConstraints(self::getVersionRanges($packageName)); + +return $provided->matches($constraint); +} + + + + + + + + + + +public static function getVersionRanges($packageName) +{ +if (!isset(self::$installed['versions'][$packageName])) { +throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); +} + +$ranges = array(); +if (isset(self::$installed['versions'][$packageName]['pretty_version'])) { +$ranges[] = self::$installed['versions'][$packageName]['pretty_version']; +} +if (array_key_exists('aliases', self::$installed['versions'][$packageName])) { +$ranges = array_merge($ranges, self::$installed['versions'][$packageName]['aliases']); +} +if (array_key_exists('replaced', self::$installed['versions'][$packageName])) { +$ranges = array_merge($ranges, self::$installed['versions'][$packageName]['replaced']); +} +if (array_key_exists('provided', self::$installed['versions'][$packageName])) { +$ranges = array_merge($ranges, self::$installed['versions'][$packageName]['provided']); +} + +return implode(' || ', $ranges); +} + + + + + +public static function getVersion($packageName) +{ +if (!isset(self::$installed['versions'][$packageName])) { +throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); +} + +if (!isset(self::$installed['versions'][$packageName]['version'])) { +return null; +} + +return self::$installed['versions'][$packageName]['version']; +} + + + + + +public static function getPrettyVersion($packageName) +{ +if (!isset(self::$installed['versions'][$packageName])) { +throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); +} + +if (!isset(self::$installed['versions'][$packageName]['pretty_version'])) { +return null; +} + +return self::$installed['versions'][$packageName]['pretty_version']; +} + + + + + +public static function getReference($packageName) +{ +if (!isset(self::$installed['versions'][$packageName])) { +throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); +} + +if (!isset(self::$installed['versions'][$packageName]['reference'])) { +return null; +} + +return self::$installed['versions'][$packageName]['reference']; +} + + + + + +public static function getRootPackage() +{ +return self::$installed['root']; +} + + + + + + + +public static function getRawData() +{ +return self::$installed; +} + + + + + + + + + + + + + + + + + + + +public static function reload($data) +{ +self::$installed = $data; +} +} diff --git a/kirby/vendor/composer/autoload_classmap.php b/kirby/vendor/composer/autoload_classmap.php index a7f4d9c..bb34f70 100755 --- a/kirby/vendor/composer/autoload_classmap.php +++ b/kirby/vendor/composer/autoload_classmap.php @@ -6,6 +6,7 @@ $vendorDir = dirname(dirname(__FILE__)); $baseDir = dirname($vendorDir); return array( + 'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php', 'Kirby\\Api\\Api' => $baseDir . '/src/Api/Api.php', 'Kirby\\Api\\Collection' => $baseDir . '/src/Api/Collection.php', 'Kirby\\Api\\Model' => $baseDir . '/src/Api/Model.php', @@ -25,6 +26,11 @@ return array( 'Kirby\\Cms\\AppUsers' => $baseDir . '/src/Cms/AppUsers.php', 'Kirby\\Cms\\Asset' => $baseDir . '/src/Cms/Asset.php', 'Kirby\\Cms\\Auth' => $baseDir . '/src/Cms/Auth.php', + 'Kirby\\Cms\\Auth\\Challenge' => $baseDir . '/src/Cms/Auth/Challenge.php', + 'Kirby\\Cms\\Auth\\EmailChallenge' => $baseDir . '/src/Cms/Auth/EmailChallenge.php', + 'Kirby\\Cms\\Block' => $baseDir . '/src/Cms/Block.php', + 'Kirby\\Cms\\BlockConverter' => $baseDir . '/src/Cms/BlockConverter.php', + 'Kirby\\Cms\\Blocks' => $baseDir . '/src/Cms/Blocks.php', 'Kirby\\Cms\\Blueprint' => $baseDir . '/src/Cms/Blueprint.php', 'Kirby\\Cms\\Collection' => $baseDir . '/src/Cms/Collection.php', 'Kirby\\Cms\\Collections' => $baseDir . '/src/Cms/Collections.php', @@ -36,6 +42,8 @@ return array( 'Kirby\\Cms\\Email' => $baseDir . '/src/Cms/Email.php', 'Kirby\\Cms\\Event' => $baseDir . '/src/Cms/Event.php', 'Kirby\\Cms\\Field' => $baseDir . '/src/Cms/Field.php', + 'Kirby\\Cms\\Fieldset' => $baseDir . '/src/Cms/Fieldset.php', + 'Kirby\\Cms\\Fieldsets' => $baseDir . '/src/Cms/Fieldsets.php', 'Kirby\\Cms\\File' => $baseDir . '/src/Cms/File.php', 'Kirby\\Cms\\FileActions' => $baseDir . '/src/Cms/FileActions.php', 'Kirby\\Cms\\FileBlueprint' => $baseDir . '/src/Cms/FileBlueprint.php', @@ -54,6 +62,8 @@ return array( 'Kirby\\Cms\\HasSiblings' => $baseDir . '/src/Cms/HasSiblings.php', 'Kirby\\Cms\\Html' => $baseDir . '/src/Cms/Html.php', 'Kirby\\Cms\\Ingredients' => $baseDir . '/src/Cms/Ingredients.php', + 'Kirby\\Cms\\Item' => $baseDir . '/src/Cms/Item.php', + 'Kirby\\Cms\\Items' => $baseDir . '/src/Cms/Items.php', 'Kirby\\Cms\\KirbyTag' => $baseDir . '/src/Cms/KirbyTag.php', 'Kirby\\Cms\\KirbyTags' => $baseDir . '/src/Cms/KirbyTags.php', 'Kirby\\Cms\\Language' => $baseDir . '/src/Cms/Language.php', @@ -61,6 +71,10 @@ return array( 'Kirby\\Cms\\LanguageRoutes' => $baseDir . '/src/Cms/LanguageRoutes.php', 'Kirby\\Cms\\LanguageRules' => $baseDir . '/src/Cms/LanguageRules.php', 'Kirby\\Cms\\Languages' => $baseDir . '/src/Cms/Languages.php', + 'Kirby\\Cms\\Layout' => $baseDir . '/src/Cms/Layout.php', + 'Kirby\\Cms\\LayoutColumn' => $baseDir . '/src/Cms/LayoutColumn.php', + 'Kirby\\Cms\\LayoutColumns' => $baseDir . '/src/Cms/LayoutColumns.php', + 'Kirby\\Cms\\Layouts' => $baseDir . '/src/Cms/Layouts.php', 'Kirby\\Cms\\Media' => $baseDir . '/src/Cms/Media.php', 'Kirby\\Cms\\Model' => $baseDir . '/src/Cms/Model.php', 'Kirby\\Cms\\ModelPermissions' => $baseDir . '/src/Cms/ModelPermissions.php', @@ -140,8 +154,14 @@ return array( 'Kirby\\Exception\\NotFoundException' => $baseDir . '/src/Exception/NotFoundException.php', 'Kirby\\Exception\\PermissionException' => $baseDir . '/src/Exception/PermissionException.php', 'Kirby\\Form\\Field' => $baseDir . '/src/Form/Field.php', + 'Kirby\\Form\\FieldClass' => $baseDir . '/src/Form/FieldClass.php', + 'Kirby\\Form\\Field\\BlocksField' => $baseDir . '/src/Form/Field/BlocksField.php', + 'Kirby\\Form\\Field\\LayoutField' => $baseDir . '/src/Form/Field/LayoutField.php', 'Kirby\\Form\\Fields' => $baseDir . '/src/Form/Fields.php', 'Kirby\\Form\\Form' => $baseDir . '/src/Form/Form.php', + 'Kirby\\Form\\Mixin\\EmptyState' => $baseDir . '/src/Form/Mixin/EmptyState.php', + 'Kirby\\Form\\Mixin\\Max' => $baseDir . '/src/Form/Mixin/Max.php', + 'Kirby\\Form\\Mixin\\Min' => $baseDir . '/src/Form/Mixin/Min.php', 'Kirby\\Form\\Options' => $baseDir . '/src/Form/Options.php', 'Kirby\\Form\\OptionsApi' => $baseDir . '/src/Form/OptionsApi.php', 'Kirby\\Form\\OptionsQuery' => $baseDir . '/src/Form/OptionsQuery.php', @@ -176,6 +196,12 @@ return array( 'Kirby\\Image\\Exif' => $baseDir . '/src/Image/Exif.php', 'Kirby\\Image\\Image' => $baseDir . '/src/Image/Image.php', 'Kirby\\Image\\Location' => $baseDir . '/src/Image/Location.php', + 'Kirby\\Parsley\\Element' => $baseDir . '/src/Parsley/Element.php', + 'Kirby\\Parsley\\Inline' => $baseDir . '/src/Parsley/Inline.php', + 'Kirby\\Parsley\\Parsley' => $baseDir . '/src/Parsley/Parsley.php', + 'Kirby\\Parsley\\Schema' => $baseDir . '/src/Parsley/Schema.php', + 'Kirby\\Parsley\\Schema\\Blocks' => $baseDir . '/src/Parsley/Schema/Blocks.php', + 'Kirby\\Parsley\\Schema\\Plain' => $baseDir . '/src/Parsley/Schema/Plain.php', 'Kirby\\Session\\AutoSession' => $baseDir . '/src/Session/AutoSession.php', 'Kirby\\Session\\FileSessionStore' => $baseDir . '/src/Session/FileSessionStore.php', 'Kirby\\Session\\Session' => $baseDir . '/src/Session/Session.php', @@ -199,6 +225,7 @@ return array( 'Kirby\\Toolkit\\Html' => $baseDir . '/src/Toolkit/Html.php', 'Kirby\\Toolkit\\I18n' => $baseDir . '/src/Toolkit/I18n.php', 'Kirby\\Toolkit\\Iterator' => $baseDir . '/src/Toolkit/Iterator.php', + 'Kirby\\Toolkit\\Locale' => $baseDir . '/src/Toolkit/Locale.php', 'Kirby\\Toolkit\\Mime' => $baseDir . '/src/Toolkit/Mime.php', 'Kirby\\Toolkit\\Obj' => $baseDir . '/src/Toolkit/Obj.php', 'Kirby\\Toolkit\\Pagination' => $baseDir . '/src/Toolkit/Pagination.php', diff --git a/kirby/vendor/composer/autoload_real.php b/kirby/vendor/composer/autoload_real.php index c0f560b..d08bef2 100755 --- a/kirby/vendor/composer/autoload_real.php +++ b/kirby/vendor/composer/autoload_real.php @@ -2,7 +2,7 @@ // autoload_real.php @generated by Composer -class ComposerAutoloaderInit12091bebabd81c9aba88b2aeec22c8d7 +class ComposerAutoloaderInitc26333d865e0329b638bdc17afd29896 { private static $loader; @@ -22,15 +22,15 @@ class ComposerAutoloaderInit12091bebabd81c9aba88b2aeec22c8d7 return self::$loader; } - spl_autoload_register(array('ComposerAutoloaderInit12091bebabd81c9aba88b2aeec22c8d7', 'loadClassLoader'), true, true); + spl_autoload_register(array('ComposerAutoloaderInitc26333d865e0329b638bdc17afd29896', 'loadClassLoader'), true, true); self::$loader = $loader = new \Composer\Autoload\ClassLoader(); - spl_autoload_unregister(array('ComposerAutoloaderInit12091bebabd81c9aba88b2aeec22c8d7', 'loadClassLoader')); + spl_autoload_unregister(array('ComposerAutoloaderInitc26333d865e0329b638bdc17afd29896', 'loadClassLoader')); $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded()); if ($useStaticLoader) { - require_once __DIR__ . '/autoload_static.php'; + require __DIR__ . '/autoload_static.php'; - call_user_func(\Composer\Autoload\ComposerStaticInit12091bebabd81c9aba88b2aeec22c8d7::getInitializer($loader)); + call_user_func(\Composer\Autoload\ComposerStaticInitc26333d865e0329b638bdc17afd29896::getInitializer($loader)); } else { $map = require __DIR__ . '/autoload_namespaces.php'; foreach ($map as $namespace => $path) { @@ -51,19 +51,19 @@ class ComposerAutoloaderInit12091bebabd81c9aba88b2aeec22c8d7 $loader->register(true); if ($useStaticLoader) { - $includeFiles = Composer\Autoload\ComposerStaticInit12091bebabd81c9aba88b2aeec22c8d7::$files; + $includeFiles = Composer\Autoload\ComposerStaticInitc26333d865e0329b638bdc17afd29896::$files; } else { $includeFiles = require __DIR__ . '/autoload_files.php'; } foreach ($includeFiles as $fileIdentifier => $file) { - composerRequire12091bebabd81c9aba88b2aeec22c8d7($fileIdentifier, $file); + composerRequirec26333d865e0329b638bdc17afd29896($fileIdentifier, $file); } return $loader; } } -function composerRequire12091bebabd81c9aba88b2aeec22c8d7($fileIdentifier, $file) +function composerRequirec26333d865e0329b638bdc17afd29896($fileIdentifier, $file) { if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { require $file; diff --git a/kirby/vendor/composer/autoload_static.php b/kirby/vendor/composer/autoload_static.php index 718fa19..d6b6141 100755 --- a/kirby/vendor/composer/autoload_static.php +++ b/kirby/vendor/composer/autoload_static.php @@ -4,7 +4,7 @@ namespace Composer\Autoload; -class ComposerStaticInit12091bebabd81c9aba88b2aeec22c8d7 +class ComposerStaticInitc26333d865e0329b638bdc17afd29896 { public static $files = array ( '7e9bd612cc444b3eed788ebbe46263a0' => __DIR__ . '/..' . '/laminas/laminas-zendframework-bridge/src/autoload.php', @@ -100,6 +100,7 @@ class ComposerStaticInit12091bebabd81c9aba88b2aeec22c8d7 ); public static $classMap = array ( + 'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php', 'Kirby\\Api\\Api' => __DIR__ . '/../..' . '/src/Api/Api.php', 'Kirby\\Api\\Collection' => __DIR__ . '/../..' . '/src/Api/Collection.php', 'Kirby\\Api\\Model' => __DIR__ . '/../..' . '/src/Api/Model.php', @@ -119,6 +120,11 @@ class ComposerStaticInit12091bebabd81c9aba88b2aeec22c8d7 'Kirby\\Cms\\AppUsers' => __DIR__ . '/../..' . '/src/Cms/AppUsers.php', 'Kirby\\Cms\\Asset' => __DIR__ . '/../..' . '/src/Cms/Asset.php', 'Kirby\\Cms\\Auth' => __DIR__ . '/../..' . '/src/Cms/Auth.php', + 'Kirby\\Cms\\Auth\\Challenge' => __DIR__ . '/../..' . '/src/Cms/Auth/Challenge.php', + 'Kirby\\Cms\\Auth\\EmailChallenge' => __DIR__ . '/../..' . '/src/Cms/Auth/EmailChallenge.php', + 'Kirby\\Cms\\Block' => __DIR__ . '/../..' . '/src/Cms/Block.php', + 'Kirby\\Cms\\BlockConverter' => __DIR__ . '/../..' . '/src/Cms/BlockConverter.php', + 'Kirby\\Cms\\Blocks' => __DIR__ . '/../..' . '/src/Cms/Blocks.php', 'Kirby\\Cms\\Blueprint' => __DIR__ . '/../..' . '/src/Cms/Blueprint.php', 'Kirby\\Cms\\Collection' => __DIR__ . '/../..' . '/src/Cms/Collection.php', 'Kirby\\Cms\\Collections' => __DIR__ . '/../..' . '/src/Cms/Collections.php', @@ -130,6 +136,8 @@ class ComposerStaticInit12091bebabd81c9aba88b2aeec22c8d7 'Kirby\\Cms\\Email' => __DIR__ . '/../..' . '/src/Cms/Email.php', 'Kirby\\Cms\\Event' => __DIR__ . '/../..' . '/src/Cms/Event.php', 'Kirby\\Cms\\Field' => __DIR__ . '/../..' . '/src/Cms/Field.php', + 'Kirby\\Cms\\Fieldset' => __DIR__ . '/../..' . '/src/Cms/Fieldset.php', + 'Kirby\\Cms\\Fieldsets' => __DIR__ . '/../..' . '/src/Cms/Fieldsets.php', 'Kirby\\Cms\\File' => __DIR__ . '/../..' . '/src/Cms/File.php', 'Kirby\\Cms\\FileActions' => __DIR__ . '/../..' . '/src/Cms/FileActions.php', 'Kirby\\Cms\\FileBlueprint' => __DIR__ . '/../..' . '/src/Cms/FileBlueprint.php', @@ -148,6 +156,8 @@ class ComposerStaticInit12091bebabd81c9aba88b2aeec22c8d7 'Kirby\\Cms\\HasSiblings' => __DIR__ . '/../..' . '/src/Cms/HasSiblings.php', 'Kirby\\Cms\\Html' => __DIR__ . '/../..' . '/src/Cms/Html.php', 'Kirby\\Cms\\Ingredients' => __DIR__ . '/../..' . '/src/Cms/Ingredients.php', + 'Kirby\\Cms\\Item' => __DIR__ . '/../..' . '/src/Cms/Item.php', + 'Kirby\\Cms\\Items' => __DIR__ . '/../..' . '/src/Cms/Items.php', 'Kirby\\Cms\\KirbyTag' => __DIR__ . '/../..' . '/src/Cms/KirbyTag.php', 'Kirby\\Cms\\KirbyTags' => __DIR__ . '/../..' . '/src/Cms/KirbyTags.php', 'Kirby\\Cms\\Language' => __DIR__ . '/../..' . '/src/Cms/Language.php', @@ -155,6 +165,10 @@ class ComposerStaticInit12091bebabd81c9aba88b2aeec22c8d7 'Kirby\\Cms\\LanguageRoutes' => __DIR__ . '/../..' . '/src/Cms/LanguageRoutes.php', 'Kirby\\Cms\\LanguageRules' => __DIR__ . '/../..' . '/src/Cms/LanguageRules.php', 'Kirby\\Cms\\Languages' => __DIR__ . '/../..' . '/src/Cms/Languages.php', + 'Kirby\\Cms\\Layout' => __DIR__ . '/../..' . '/src/Cms/Layout.php', + 'Kirby\\Cms\\LayoutColumn' => __DIR__ . '/../..' . '/src/Cms/LayoutColumn.php', + 'Kirby\\Cms\\LayoutColumns' => __DIR__ . '/../..' . '/src/Cms/LayoutColumns.php', + 'Kirby\\Cms\\Layouts' => __DIR__ . '/../..' . '/src/Cms/Layouts.php', 'Kirby\\Cms\\Media' => __DIR__ . '/../..' . '/src/Cms/Media.php', 'Kirby\\Cms\\Model' => __DIR__ . '/../..' . '/src/Cms/Model.php', 'Kirby\\Cms\\ModelPermissions' => __DIR__ . '/../..' . '/src/Cms/ModelPermissions.php', @@ -234,8 +248,14 @@ class ComposerStaticInit12091bebabd81c9aba88b2aeec22c8d7 'Kirby\\Exception\\NotFoundException' => __DIR__ . '/../..' . '/src/Exception/NotFoundException.php', 'Kirby\\Exception\\PermissionException' => __DIR__ . '/../..' . '/src/Exception/PermissionException.php', 'Kirby\\Form\\Field' => __DIR__ . '/../..' . '/src/Form/Field.php', + 'Kirby\\Form\\FieldClass' => __DIR__ . '/../..' . '/src/Form/FieldClass.php', + 'Kirby\\Form\\Field\\BlocksField' => __DIR__ . '/../..' . '/src/Form/Field/BlocksField.php', + 'Kirby\\Form\\Field\\LayoutField' => __DIR__ . '/../..' . '/src/Form/Field/LayoutField.php', 'Kirby\\Form\\Fields' => __DIR__ . '/../..' . '/src/Form/Fields.php', 'Kirby\\Form\\Form' => __DIR__ . '/../..' . '/src/Form/Form.php', + 'Kirby\\Form\\Mixin\\EmptyState' => __DIR__ . '/../..' . '/src/Form/Mixin/EmptyState.php', + 'Kirby\\Form\\Mixin\\Max' => __DIR__ . '/../..' . '/src/Form/Mixin/Max.php', + 'Kirby\\Form\\Mixin\\Min' => __DIR__ . '/../..' . '/src/Form/Mixin/Min.php', 'Kirby\\Form\\Options' => __DIR__ . '/../..' . '/src/Form/Options.php', 'Kirby\\Form\\OptionsApi' => __DIR__ . '/../..' . '/src/Form/OptionsApi.php', 'Kirby\\Form\\OptionsQuery' => __DIR__ . '/../..' . '/src/Form/OptionsQuery.php', @@ -270,6 +290,12 @@ class ComposerStaticInit12091bebabd81c9aba88b2aeec22c8d7 'Kirby\\Image\\Exif' => __DIR__ . '/../..' . '/src/Image/Exif.php', 'Kirby\\Image\\Image' => __DIR__ . '/../..' . '/src/Image/Image.php', 'Kirby\\Image\\Location' => __DIR__ . '/../..' . '/src/Image/Location.php', + 'Kirby\\Parsley\\Element' => __DIR__ . '/../..' . '/src/Parsley/Element.php', + 'Kirby\\Parsley\\Inline' => __DIR__ . '/../..' . '/src/Parsley/Inline.php', + 'Kirby\\Parsley\\Parsley' => __DIR__ . '/../..' . '/src/Parsley/Parsley.php', + 'Kirby\\Parsley\\Schema' => __DIR__ . '/../..' . '/src/Parsley/Schema.php', + 'Kirby\\Parsley\\Schema\\Blocks' => __DIR__ . '/../..' . '/src/Parsley/Schema/Blocks.php', + 'Kirby\\Parsley\\Schema\\Plain' => __DIR__ . '/../..' . '/src/Parsley/Schema/Plain.php', 'Kirby\\Session\\AutoSession' => __DIR__ . '/../..' . '/src/Session/AutoSession.php', 'Kirby\\Session\\FileSessionStore' => __DIR__ . '/../..' . '/src/Session/FileSessionStore.php', 'Kirby\\Session\\Session' => __DIR__ . '/../..' . '/src/Session/Session.php', @@ -293,6 +319,7 @@ class ComposerStaticInit12091bebabd81c9aba88b2aeec22c8d7 'Kirby\\Toolkit\\Html' => __DIR__ . '/../..' . '/src/Toolkit/Html.php', 'Kirby\\Toolkit\\I18n' => __DIR__ . '/../..' . '/src/Toolkit/I18n.php', 'Kirby\\Toolkit\\Iterator' => __DIR__ . '/../..' . '/src/Toolkit/Iterator.php', + 'Kirby\\Toolkit\\Locale' => __DIR__ . '/../..' . '/src/Toolkit/Locale.php', 'Kirby\\Toolkit\\Mime' => __DIR__ . '/../..' . '/src/Toolkit/Mime.php', 'Kirby\\Toolkit\\Obj' => __DIR__ . '/../..' . '/src/Toolkit/Obj.php', 'Kirby\\Toolkit\\Pagination' => __DIR__ . '/../..' . '/src/Toolkit/Pagination.php', @@ -365,11 +392,11 @@ class ComposerStaticInit12091bebabd81c9aba88b2aeec22c8d7 public static function getInitializer(ClassLoader $loader) { return \Closure::bind(function () use ($loader) { - $loader->prefixLengthsPsr4 = ComposerStaticInit12091bebabd81c9aba88b2aeec22c8d7::$prefixLengthsPsr4; - $loader->prefixDirsPsr4 = ComposerStaticInit12091bebabd81c9aba88b2aeec22c8d7::$prefixDirsPsr4; - $loader->fallbackDirsPsr4 = ComposerStaticInit12091bebabd81c9aba88b2aeec22c8d7::$fallbackDirsPsr4; - $loader->prefixesPsr0 = ComposerStaticInit12091bebabd81c9aba88b2aeec22c8d7::$prefixesPsr0; - $loader->classMap = ComposerStaticInit12091bebabd81c9aba88b2aeec22c8d7::$classMap; + $loader->prefixLengthsPsr4 = ComposerStaticInitc26333d865e0329b638bdc17afd29896::$prefixLengthsPsr4; + $loader->prefixDirsPsr4 = ComposerStaticInitc26333d865e0329b638bdc17afd29896::$prefixDirsPsr4; + $loader->fallbackDirsPsr4 = ComposerStaticInitc26333d865e0329b638bdc17afd29896::$fallbackDirsPsr4; + $loader->prefixesPsr0 = ComposerStaticInitc26333d865e0329b638bdc17afd29896::$prefixesPsr0; + $loader->classMap = ComposerStaticInitc26333d865e0329b638bdc17afd29896::$classMap; }, null, ClassLoader::class); } diff --git a/kirby/vendor/composer/installed.php b/kirby/vendor/composer/installed.php new file mode 100755 index 0000000..a25082b --- /dev/null +++ b/kirby/vendor/composer/installed.php @@ -0,0 +1,146 @@ + + array ( + 'pretty_version' => '3.5.0-rc.5', + 'version' => '3.5.0.0-RC5', + 'aliases' => + array ( + ), + 'reference' => NULL, + 'name' => 'getkirby/cms', + ), + 'versions' => + array ( + 'claviska/simpleimage' => + array ( + 'pretty_version' => '3.5.1', + 'version' => '3.5.1.0', + 'aliases' => + array ( + ), + 'reference' => 'ab2ab8a4672738ab77b39b00922ee4e79aeadb11', + ), + 'filp/whoops' => + array ( + 'pretty_version' => '2.9.1', + 'version' => '2.9.1.0', + 'aliases' => + array ( + ), + 'reference' => '307fb34a5ab697461ec4c9db865b20ff2fd40771', + ), + 'getkirby/cms' => + array ( + 'pretty_version' => '3.5.0-rc.5', + 'version' => '3.5.0.0-RC5', + 'aliases' => + array ( + ), + 'reference' => NULL, + ), + 'getkirby/composer-installer' => + array ( + 'pretty_version' => '1.2.0', + 'version' => '1.2.0.0', + 'aliases' => + array ( + ), + 'reference' => '240a8b2c275d61b66601feb58222b7d34bc6cf1e', + ), + 'laminas/laminas-escaper' => + array ( + 'pretty_version' => '2.7.0', + 'version' => '2.7.0.0', + 'aliases' => + array ( + ), + 'reference' => '5e04bc5ae5990b17159d79d331055e2c645e5cc5', + ), + 'laminas/laminas-zendframework-bridge' => + array ( + 'pretty_version' => '1.1.1', + 'version' => '1.1.1.0', + 'aliases' => + array ( + ), + 'reference' => '6ede70583e101030bcace4dcddd648f760ddf642', + ), + 'league/color-extractor' => + array ( + 'pretty_version' => '0.3.2', + 'version' => '0.3.2.0', + 'aliases' => + array ( + ), + 'reference' => '837086ec60f50c84c611c613963e4ad2e2aec806', + ), + 'matthecat/colorextractor' => + array ( + 'replaced' => + array ( + 0 => '*', + ), + ), + 'michelf/php-smartypants' => + array ( + 'pretty_version' => '1.8.1', + 'version' => '1.8.1.0', + 'aliases' => + array ( + ), + 'reference' => '47d17c90a4dfd0ccf1f87e25c65e6c8012415aad', + ), + 'mustangostang/spyc' => + array ( + 'pretty_version' => '0.6.3', + 'version' => '0.6.3.0', + 'aliases' => + array ( + ), + 'reference' => '4627c838b16550b666d15aeae1e5289dd5b77da0', + ), + 'phpmailer/phpmailer' => + array ( + 'pretty_version' => 'v6.2.0', + 'version' => '6.2.0.0', + 'aliases' => + array ( + ), + 'reference' => 'e38888a75c070304ca5514197d4847a59a5c853f', + ), + 'psr/log' => + array ( + 'pretty_version' => '1.1.3', + 'version' => '1.1.3.0', + 'aliases' => + array ( + ), + 'reference' => '0f73288fd15629204f9d42b7055f72dacbe811fc', + ), + 'symfony/polyfill-mbstring' => + array ( + 'pretty_version' => 'v1.20.0', + 'version' => '1.20.0.0', + 'aliases' => + array ( + ), + 'reference' => '39d483bdf39be819deabf04ec872eb0b2410b531', + ), + 'true/punycode' => + array ( + 'pretty_version' => 'v2.1.1', + 'version' => '2.1.1.0', + 'aliases' => + array ( + ), + 'reference' => 'a4d0c11a36dd7f4e7cd7096076cab6d3378a071e', + ), + 'zendframework/zend-escaper' => + array ( + 'replaced' => + array ( + 0 => '^2.6.1', + ), + ), + ), +); diff --git a/kirby/vendor/filp/whoops/src/Whoops/Exception/Formatter.php b/kirby/vendor/filp/whoops/src/Whoops/Exception/Formatter.php index e467559..573dda0 100755 --- a/kirby/vendor/filp/whoops/src/Whoops/Exception/Formatter.php +++ b/kirby/vendor/filp/whoops/src/Whoops/Exception/Formatter.php @@ -21,6 +21,7 @@ class Formatter $response = [ 'type' => get_class($exception), 'message' => $exception->getMessage(), + 'code' => $exception->getCode(), 'file' => $exception->getFile(), 'line' => $exception->getLine(), ]; diff --git a/kirby/vendor/filp/whoops/src/Whoops/Exception/Inspector.php b/kirby/vendor/filp/whoops/src/Whoops/Exception/Inspector.php index 04f72df..8570959 100755 --- a/kirby/vendor/filp/whoops/src/Whoops/Exception/Inspector.php +++ b/kirby/vendor/filp/whoops/src/Whoops/Exception/Inspector.php @@ -251,7 +251,7 @@ class Inspector return $traces; } - if (!extension_loaded('xdebug') || !xdebug_is_enabled()) { + if (!extension_loaded('xdebug') || !function_exists('xdebug_is_enabled') || !xdebug_is_enabled()) { return $traces; } diff --git a/kirby/vendor/filp/whoops/src/Whoops/Handler/PrettyPageHandler.php b/kirby/vendor/filp/whoops/src/Whoops/Handler/PrettyPageHandler.php index 8f98e66..a907d4d 100755 --- a/kirby/vendor/filp/whoops/src/Whoops/Handler/PrettyPageHandler.php +++ b/kirby/vendor/filp/whoops/src/Whoops/Handler/PrettyPageHandler.php @@ -47,14 +47,14 @@ class PrettyPageHandler extends Handler /** * The name of the custom css file. * - * @var string + * @var string|null */ private $customCss = null; /** * The name of the custom js file. * - * @var string + * @var string|null */ private $customJs = null; @@ -518,8 +518,8 @@ class PrettyPageHandler extends Handler /** * Determine if the editor link should act as an Ajax request. * - * @param string $filePath - * @param int $line + * @param string $filePath + * @param int $line * * @throws UnexpectedValueException If editor resolver does not return a boolean * @@ -611,7 +611,7 @@ class PrettyPageHandler extends Handler /** * Adds a path to the list of paths to be searched for resources. * - * @param string $path + * @param string $path * * @throws InvalidArgumentException If $path is not a valid directory * @@ -631,7 +631,7 @@ class PrettyPageHandler extends Handler /** * Adds a custom css file to be loaded. * - * @param string $name + * @param string|null $name * * @return void */ @@ -643,7 +643,8 @@ class PrettyPageHandler extends Handler /** * Adds a custom js file to be loaded. * - * @param string $name + * @param string|null $name + * * @return void */ public function addCustomJs($name) @@ -666,7 +667,7 @@ class PrettyPageHandler extends Handler * way back to the first, enabling a cascading-type system of overrides for * all resources. * - * @param string $resource + * @param string $resource * * @throws RuntimeException If resource cannot be found in any of the available paths * @@ -760,9 +761,11 @@ class PrettyPageHandler extends Handler /** * blacklist a sensitive value within one of the superglobal arrays. + * Alias for the hideSuperglobalKey method. * * @param string $superGlobalName The name of the superglobal array, e.g. '_GET' * @param string $key The key within the superglobal + * @see hideSuperglobalKey * * @return void */ @@ -771,6 +774,18 @@ class PrettyPageHandler extends Handler $this->blacklist[$superGlobalName][] = $key; } + /** + * Hide a sensitive value within one of the superglobal arrays. + * + * @param string $superGlobalName The name of the superglobal array, e.g. '_GET' + * @param string $key The key within the superglobal + * @return void + */ + public function hideSuperglobalKey($superGlobalName, $key) + { + return $this->blacklist($superGlobalName, $key); + } + /** * Checks all values within the given superGlobal array. * @@ -778,7 +793,7 @@ class PrettyPageHandler extends Handler * only '*' characters. We intentionally dont rely on $GLOBALS as it * depends on the 'auto_globals_jit' php.ini setting. * - * @param array $superGlobal One of the superglobal arrays + * @param array $superGlobal One of the superglobal arrays * @param string $superGlobalName The name of the superglobal array, e.g. '_GET' * * @return array $values without sensitive data diff --git a/kirby/vendor/filp/whoops/src/Whoops/Run.php b/kirby/vendor/filp/whoops/src/Whoops/Run.php index 1484736..4ea7630 100755 --- a/kirby/vendor/filp/whoops/src/Whoops/Run.php +++ b/kirby/vendor/filp/whoops/src/Whoops/Run.php @@ -7,6 +7,7 @@ namespace Whoops; use InvalidArgumentException; +use Throwable; use Whoops\Exception\ErrorException; use Whoops\Exception\Inspector; use Whoops\Handler\CallbackHandler; @@ -17,8 +18,19 @@ use Whoops\Util\SystemFacade; final class Run implements RunInterface { + /** + * @var bool + */ private $isRegistered; + + /** + * @var bool + */ private $allowQuit = true; + + /** + * @var bool + */ private $sendOutput = true; /** @@ -31,17 +43,35 @@ final class Run implements RunInterface */ private $handlerStack = []; + /** + * @var array + * @psalm-var list + */ private $silencedPatterns = []; + /** + * @var SystemFacade + */ private $system; + /** + * In certain scenarios, like in shutdown handler, we can not throw exceptions. + * + * @var bool + */ + private $canThrowExceptions = true; + public function __construct(SystemFacade $system = null) { $this->system = $system ?: new SystemFacade; } /** - * Explicitly request your handler runs as the last of all currently registered handlers + * Explicitly request your handler runs as the last of all currently registered handlers. + * + * @param HandlerInterface $handler + * + * @return Run */ public function appendHandler($handler) { @@ -50,7 +80,11 @@ final class Run implements RunInterface } /** - * Explicitly request your handler runs as the first of all currently registered handlers + * Explicitly request your handler runs as the first of all currently registered handlers. + * + * @param HandlerInterface $handler + * + * @return Run */ public function prependHandler($handler) { @@ -58,12 +92,14 @@ final class Run implements RunInterface } /** - * Register your handler as the last of all currently registered handlers. + * Register your handler as the last of all currently registered handlers (to be executed first). * Prefer using appendHandler and prependHandler for clarity. * - * @throws InvalidArgumentException If argument is not callable or instance of HandlerInterface - * @param Callable|HandlerInterface $handler + * @param Callable|HandlerInterface $handler + * * @return Run + * + * @throws InvalidArgumentException If argument is not callable or instance of HandlerInterface. */ public function pushHandler($handler) { @@ -72,17 +108,21 @@ final class Run implements RunInterface } /** - * See removeFirstHandler and removeLastHandler - * @return null|HandlerInterface + * Removes and returns the last handler pushed to the handler stack. + * + * @see Run::removeFirstHandler(), Run::removeLastHandler() + * + * @return HandlerInterface|null */ public function popHandler() { return array_pop($this->handlerStack); } - /** - * Removes the first handler + * Removes the first handler. + * + * @return void */ public function removeFirstHandler() { @@ -90,7 +130,9 @@ final class Run implements RunInterface } /** - * Removes the last handler + * Removes the last handler. + * + * @return void */ public function removeLastHandler() { @@ -98,8 +140,8 @@ final class Run implements RunInterface } /** - * Returns an array with all handlers, in the - * order they were added to the stack. + * Returns an array with all handlers, in the order they were added to the stack. + * * @return array */ public function getHandlers() @@ -108,8 +150,8 @@ final class Run implements RunInterface } /** - * Clears all handlers in the handlerStack, including - * the default PrettyPage handler. + * Clears all handlers in the handlerStack, including the default PrettyPage handler. + * * @return Run */ public function clearHandlers() @@ -118,17 +160,9 @@ final class Run implements RunInterface return $this; } - /** - * @param \Throwable $exception - * @return Inspector - */ - private function getInspector($exception) - { - return new Inspector($exception); - } - /** * Registers this instance as an error handler. + * * @return Run */ public function register() @@ -152,7 +186,8 @@ final class Run implements RunInterface } /** - * Unregisters all handlers registered by this Whoops\Run instance + * Unregisters all handlers registered by this Whoops\Run instance. + * * @return Run */ public function unregister() @@ -169,7 +204,9 @@ final class Run implements RunInterface /** * Should Whoops allow Handlers to force the script to quit? - * @param bool|int $exit + * + * @param bool|int $exit + * * @return bool */ public function allowQuit($exit = null) @@ -182,10 +219,12 @@ final class Run implements RunInterface } /** - * Silence particular errors in particular files - * @param array|string $patterns List or a single regex pattern to match - * @param int $levels Defaults to E_STRICT | E_DEPRECATED - * @return \Whoops\Run + * Silence particular errors in particular files. + * + * @param array|string $patterns List or a single regex pattern to match. + * @param int $levels Defaults to E_STRICT | E_DEPRECATED. + * + * @return Run */ public function silenceErrorsInPaths($patterns, $levels = 10240) { @@ -201,12 +240,12 @@ final class Run implements RunInterface (array) $patterns ) ); + return $this; } - /** - * Returns an array with silent errors in path configuration + * Returns an array with silent errors in path configuration. * * @return array */ @@ -215,13 +254,16 @@ final class Run implements RunInterface return $this->silencedPatterns; } - /* + /** * Should Whoops send HTTP error code to the browser if possible? * Whoops will by default send HTTP code 500, but you may wish to * use 502, 503, or another 5xx family code. * * @param bool|int $code + * * @return int|false + * + * @throws InvalidArgumentException */ public function sendHttpCode($code = null) { @@ -239,7 +281,7 @@ final class Run implements RunInterface if ($code < 400 || 600 <= $code) { throw new InvalidArgumentException( - "Invalid status code '$code', must be 4xx or 5xx" + "Invalid status code '$code', must be 4xx or 5xx" ); } @@ -248,8 +290,10 @@ final class Run implements RunInterface /** * Should Whoops push output directly to the client? - * If this is false, output will be returned by handleException - * @param bool|int $send + * If this is false, output will be returned by handleException. + * + * @param bool|int $send + * * @return bool */ public function writeToOutput($send = null) @@ -262,11 +306,11 @@ final class Run implements RunInterface } /** - * Handles an exception, ultimately generating a Whoops error - * page. + * Handles an exception, ultimately generating a Whoops error page. * - * @param \Throwable $exception - * @return string Output generated by handlers + * @param Throwable $exception + * + * @return string Output generated by handlers. */ public function handleException($exception) { @@ -343,17 +387,17 @@ final class Run implements RunInterface } /** - * Converts generic PHP errors to \ErrorException - * instances, before passing them off to be handled. + * Converts generic PHP errors to \ErrorException instances, before passing them off to be handled. * * This method MUST be compatible with set_error_handler. * - * @param int $level - * @param string $message - * @param string $file - * @param int $line + * @param int $level + * @param string $message + * @param string|null $file + * @param int|null $line * * @return bool + * * @throws ErrorException */ public function handleError($level, $message, $file = null, $line = null) @@ -388,6 +432,8 @@ final class Run implements RunInterface /** * Special case to deal with Fatal errors and the like. + * + * @return void */ public function handleShutdown() { @@ -411,11 +457,24 @@ final class Run implements RunInterface } /** - * In certain scenarios, like in shutdown handler, we can not throw exceptions - * @var bool + * @param Throwable $exception + * + * @return Inspector */ - private $canThrowExceptions = true; + private function getInspector($exception) + { + return new Inspector($exception); + } + /** + * Resolves the giving handler. + * + * @param HandlerInterface $handler + * + * @return HandlerInterface + * + * @throws InvalidArgumentException + */ private function resolveHandler($handler) { if (is_callable($handler)) { @@ -424,7 +483,7 @@ final class Run implements RunInterface if (!$handler instanceof HandlerInterface) { throw new InvalidArgumentException( - "Handler must be a callable, or instance of " + "Handler must be a callable, or instance of " . "Whoops\\Handler\\HandlerInterface" ); } @@ -433,13 +492,15 @@ final class Run implements RunInterface } /** - * Echo something to the browser - * @param string $output - * @return $this + * Echo something to the browser. + * + * @param string $output + * + * @return Run */ private function writeToOutputNow($output) { - if ($this->sendHttpCode() && \Whoops\Util\Misc::canSendHeaders()) { + if ($this->sendHttpCode() && Misc::canSendHeaders()) { $this->system->setHttpResponseCode( $this->sendHttpCode() ); diff --git a/kirby/vendor/getkirby/composer-installer/composer.lock b/kirby/vendor/getkirby/composer-installer/composer.lock new file mode 100755 index 0000000..2c7a1d6 --- /dev/null +++ b/kirby/vendor/getkirby/composer-installer/composer.lock @@ -0,0 +1,3050 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "1daf0aac8213b913eae06aa8a94efc92", + "packages": [], + "packages-dev": [ + { + "name": "composer/ca-bundle", + "version": "1.2.8", + "source": { + "type": "git", + "url": "https://github.com/composer/ca-bundle.git", + "reference": "8a7ecad675253e4654ea05505233285377405215" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/ca-bundle/zipball/8a7ecad675253e4654ea05505233285377405215", + "reference": "8a7ecad675253e4654ea05505233285377405215", + "shasum": "" + }, + "require": { + "ext-openssl": "*", + "ext-pcre": "*", + "php": "^5.3.2 || ^7.0 || ^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 8", + "psr/log": "^1.0", + "symfony/process": "^2.5 || ^3.0 || ^4.0 || ^5.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\CaBundle\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.", + "keywords": [ + "cabundle", + "cacert", + "certificate", + "ssl", + "tls" + ], + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2020-08-23T12:54:47+00:00" + }, + { + "name": "composer/composer", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/composer/composer.git", + "reference": "6cf4ba051c858a31371462d6e16cc479a7ff9ac2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/composer/zipball/6cf4ba051c858a31371462d6e16cc479a7ff9ac2", + "reference": "6cf4ba051c858a31371462d6e16cc479a7ff9ac2", + "shasum": "" + }, + "require": { + "composer/ca-bundle": "^1.0", + "composer/semver": "^3.0", + "composer/spdx-licenses": "^1.2", + "composer/xdebug-handler": "^1.1", + "justinrainbow/json-schema": "^5.2.10", + "php": "^5.3.2 || ^7.0 || ^8.0", + "psr/log": "^1.0", + "react/promise": "^1.2 || ^2.7", + "seld/jsonlint": "^1.4", + "seld/phar-utils": "^1.0", + "symfony/console": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0", + "symfony/filesystem": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0", + "symfony/finder": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0", + "symfony/process": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0" + }, + "require-dev": { + "phpspec/prophecy": "^1.10", + "symfony/phpunit-bridge": "^4.2 || ^5.0" + }, + "suggest": { + "ext-openssl": "Enabling the openssl extension allows you to access https URLs for repositories and packages", + "ext-zip": "Enabling the zip extension allows you to unzip archives", + "ext-zlib": "Allow gzip compression of HTTP requests" + }, + "bin": [ + "bin/composer" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\": "src/Composer" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nils Adermann", + "email": "naderman@naderman.de", + "homepage": "https://www.naderman.de" + }, + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "https://seld.be" + } + ], + "description": "Composer helps you declare, manage and install dependencies of PHP projects. It ensures you have the right stack everywhere.", + "homepage": "https://getcomposer.org/", + "keywords": [ + "autoload", + "dependency", + "package" + ], + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2020-09-11T11:43:32+00:00" + }, + { + "name": "composer/semver", + "version": "3.2.0", + "source": { + "type": "git", + "url": "https://github.com/composer/semver.git", + "reference": "da7ce661431b17a71271cdf7f5437dc722133123" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/semver/zipball/da7ce661431b17a71271cdf7f5437dc722133123", + "reference": "da7ce661431b17a71271cdf7f5437dc722133123", + "shasum": "" + }, + "require": { + "php": "^5.3.2 || ^7.0 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^0.12.19", + "symfony/phpunit-bridge": "^4.2 || ^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\Semver\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nils Adermann", + "email": "naderman@naderman.de", + "homepage": "http://www.naderman.de" + }, + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + }, + { + "name": "Rob Bast", + "email": "rob.bast@gmail.com", + "homepage": "http://robbast.nl" + } + ], + "description": "Semver library that offers utilities, version constraint parsing and validation.", + "keywords": [ + "semantic", + "semver", + "validation", + "versioning" + ], + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2020-09-09T09:39:19+00:00" + }, + { + "name": "composer/spdx-licenses", + "version": "1.5.4", + "source": { + "type": "git", + "url": "https://github.com/composer/spdx-licenses.git", + "reference": "6946f785871e2314c60b4524851f3702ea4f2223" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/6946f785871e2314c60b4524851f3702ea4f2223", + "reference": "6946f785871e2314c60b4524851f3702ea4f2223", + "shasum": "" + }, + "require": { + "php": "^5.3.2 || ^7.0 || ^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\Spdx\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nils Adermann", + "email": "naderman@naderman.de", + "homepage": "http://www.naderman.de" + }, + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + }, + { + "name": "Rob Bast", + "email": "rob.bast@gmail.com", + "homepage": "http://robbast.nl" + } + ], + "description": "SPDX licenses list and validation library.", + "keywords": [ + "license", + "spdx", + "validator" + ], + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2020-07-15T15:35:07+00:00" + }, + { + "name": "composer/xdebug-handler", + "version": "1.4.3", + "source": { + "type": "git", + "url": "https://github.com/composer/xdebug-handler.git", + "reference": "ebd27a9866ae8254e873866f795491f02418c5a5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/ebd27a9866ae8254e873866f795491f02418c5a5", + "reference": "ebd27a9866ae8254e873866f795491f02418c5a5", + "shasum": "" + }, + "require": { + "php": "^5.3.2 || ^7.0 || ^8.0", + "psr/log": "^1.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 8" + }, + "type": "library", + "autoload": { + "psr-4": { + "Composer\\XdebugHandler\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "John Stevenson", + "email": "john-stevenson@blueyonder.co.uk" + } + ], + "description": "Restarts a process without Xdebug.", + "keywords": [ + "Xdebug", + "performance" + ], + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2020-08-19T10:27:58+00:00" + }, + { + "name": "doctrine/instantiator", + "version": "1.3.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/instantiator.git", + "reference": "f350df0268e904597e3bd9c4685c53e0e333feea" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/f350df0268e904597e3bd9c4685c53e0e333feea", + "reference": "f350df0268e904597e3bd9c4685c53e0e333feea", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^6.0", + "ext-pdo": "*", + "ext-phar": "*", + "phpbench/phpbench": "^0.13", + "phpstan/phpstan-phpunit": "^0.11", + "phpstan/phpstan-shim": "^0.11", + "phpunit/phpunit": "^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "http://ocramius.github.com/" + } + ], + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://www.doctrine-project.org/projects/instantiator.html", + "keywords": [ + "constructor", + "instantiate" + ], + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator", + "type": "tidelift" + } + ], + "time": "2020-05-29T17:27:14+00:00" + }, + { + "name": "justinrainbow/json-schema", + "version": "5.2.10", + "source": { + "type": "git", + "url": "https://github.com/justinrainbow/json-schema.git", + "reference": "2ba9c8c862ecd5510ed16c6340aa9f6eadb4f31b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/2ba9c8c862ecd5510ed16c6340aa9f6eadb4f31b", + "reference": "2ba9c8c862ecd5510ed16c6340aa9f6eadb4f31b", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "~2.2.20||~2.15.1", + "json-schema/json-schema-test-suite": "1.2.0", + "phpunit/phpunit": "^4.8.35" + }, + "bin": [ + "bin/validate-json" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "JsonSchema\\": "src/JsonSchema/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bruno Prieto Reis", + "email": "bruno.p.reis@gmail.com" + }, + { + "name": "Justin Rainbow", + "email": "justin.rainbow@gmail.com" + }, + { + "name": "Igor Wiedler", + "email": "igor@wiedler.ch" + }, + { + "name": "Robert Schönthal", + "email": "seroscho@googlemail.com" + } + ], + "description": "A library to validate a json schema.", + "homepage": "https://github.com/justinrainbow/json-schema", + "keywords": [ + "json", + "schema" + ], + "time": "2020-05-27T16:41:55+00:00" + }, + { + "name": "myclabs/deep-copy", + "version": "1.10.1", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "969b211f9a51aa1f6c01d1d2aef56d3bd91598e5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/969b211f9a51aa1f6c01d1d2aef56d3bd91598e5", + "reference": "969b211f9a51aa1f6c01d1d2aef56d3bd91598e5", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "replace": { + "myclabs/deep-copy": "self.version" + }, + "require-dev": { + "doctrine/collections": "^1.0", + "doctrine/common": "^2.6", + "phpunit/phpunit": "^7.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + }, + "files": [ + "src/DeepCopy/deep_copy.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Create deep copies (clones) of your objects", + "keywords": [ + "clone", + "copy", + "duplicate", + "object", + "object graph" + ], + "funding": [ + { + "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", + "type": "tidelift" + } + ], + "time": "2020-06-29T13:22:24+00:00" + }, + { + "name": "phar-io/manifest", + "version": "1.0.3", + "source": { + "type": "git", + "url": "https://github.com/phar-io/manifest.git", + "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", + "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-phar": "*", + "phar-io/version": "^2.0", + "php": "^5.6 || ^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "time": "2018-07-08T19:23:20+00:00" + }, + { + "name": "phar-io/version", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/phar-io/version.git", + "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/version/zipball/45a2ec53a73c70ce41d55cedef9063630abaf1b6", + "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Library for handling version information and constraints", + "time": "2018-07-08T19:19:57+00:00" + }, + { + "name": "phpdocumentor/reflection-common", + "version": "2.2.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-2.x": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" + } + ], + "description": "Common reflection classes used by phpdocumentor to reflect the code structure", + "homepage": "http://www.phpdoc.org", + "keywords": [ + "FQSEN", + "phpDocumentor", + "phpdoc", + "reflection", + "static analysis" + ], + "time": "2020-06-27T09:03:43+00:00" + }, + { + "name": "phpdocumentor/reflection-docblock", + "version": "5.2.1", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "d870572532cd70bc3fab58f2e23ad423c8404c44" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/d870572532cd70bc3fab58f2e23ad423c8404c44", + "reference": "d870572532cd70bc3fab58f2e23ad423c8404c44", + "shasum": "" + }, + "require": { + "ext-filter": "*", + "php": "^7.2 || ^8.0", + "phpdocumentor/reflection-common": "^2.2", + "phpdocumentor/type-resolver": "^1.3", + "webmozart/assert": "^1.9.1" + }, + "require-dev": { + "mockery/mockery": "~1.3.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + }, + { + "name": "Jaap van Otterdijk", + "email": "account@ijaap.nl" + } + ], + "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + "time": "2020-08-15T11:14:08+00:00" + }, + { + "name": "phpdocumentor/type-resolver", + "version": "1.3.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "e878a14a65245fbe78f8080eba03b47c3b705651" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/e878a14a65245fbe78f8080eba03b47c3b705651", + "reference": "e878a14a65245fbe78f8080eba03b47c3b705651", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0", + "phpdocumentor/reflection-common": "^2.0" + }, + "require-dev": { + "ext-tokenizer": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-1.x": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", + "time": "2020-06-27T10:12:23+00:00" + }, + { + "name": "phpspec/prophecy", + "version": "1.11.1", + "source": { + "type": "git", + "url": "https://github.com/phpspec/prophecy.git", + "reference": "b20034be5efcdab4fb60ca3a29cba2949aead160" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/b20034be5efcdab4fb60ca3a29cba2949aead160", + "reference": "b20034be5efcdab4fb60ca3a29cba2949aead160", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.2", + "php": "^7.2", + "phpdocumentor/reflection-docblock": "^5.0", + "sebastian/comparator": "^3.0 || ^4.0", + "sebastian/recursion-context": "^3.0 || ^4.0" + }, + "require-dev": { + "phpspec/phpspec": "^6.0", + "phpunit/phpunit": "^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.11.x-dev" + } + }, + "autoload": { + "psr-4": { + "Prophecy\\": "src/Prophecy" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + }, + { + "name": "Marcello Duarte", + "email": "marcello.duarte@gmail.com" + } + ], + "description": "Highly opinionated mocking framework for PHP 5.3+", + "homepage": "https://github.com/phpspec/prophecy", + "keywords": [ + "Double", + "Dummy", + "fake", + "mock", + "spy", + "stub" + ], + "time": "2020-07-08T12:44:21+00:00" + }, + { + "name": "phpunit/php-code-coverage", + "version": "6.1.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "807e6013b00af69b6c5d9ceb4282d0393dbb9d8d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/807e6013b00af69b6c5d9ceb4282d0393dbb9d8d", + "reference": "807e6013b00af69b6c5d9ceb4282d0393dbb9d8d", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-xmlwriter": "*", + "php": "^7.1", + "phpunit/php-file-iterator": "^2.0", + "phpunit/php-text-template": "^1.2.1", + "phpunit/php-token-stream": "^3.0", + "sebastian/code-unit-reverse-lookup": "^1.0.1", + "sebastian/environment": "^3.1 || ^4.0", + "sebastian/version": "^2.0.1", + "theseer/tokenizer": "^1.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.0" + }, + "suggest": { + "ext-xdebug": "^2.6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "6.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "keywords": [ + "coverage", + "testing", + "xunit" + ], + "time": "2018-10-31T16:06:48+00:00" + }, + { + "name": "phpunit/php-file-iterator", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "050bedf145a257b1ff02746c31894800e5122946" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/050bedf145a257b1ff02746c31894800e5122946", + "reference": "050bedf145a257b1ff02746c31894800e5122946", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "keywords": [ + "filesystem", + "iterator" + ], + "time": "2018-09-13T20:33:42+00:00" + }, + { + "name": "phpunit/php-text-template", + "version": "1.2.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "time": "2015-06-21T13:50:34+00:00" + }, + { + "name": "phpunit/php-timer", + "version": "2.1.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "1038454804406b0b5f5f520358e78c1c2f71501e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/1038454804406b0b5f5f520358e78c1c2f71501e", + "reference": "1038454804406b0b5f5f520358e78c1c2f71501e", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ], + "time": "2019-06-07T04:22:29+00:00" + }, + { + "name": "phpunit/php-token-stream", + "version": "3.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-token-stream.git", + "reference": "995192df77f63a59e47f025390d2d1fdf8f425ff" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/995192df77f63a59e47f025390d2d1fdf8f425ff", + "reference": "995192df77f63a59e47f025390d2d1fdf8f425ff", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": "^7.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Wrapper around PHP's tokenizer extension.", + "homepage": "https://github.com/sebastianbergmann/php-token-stream/", + "keywords": [ + "tokenizer" + ], + "abandoned": true, + "time": "2019-09-17T06:23:10+00:00" + }, + { + "name": "phpunit/phpunit", + "version": "7.5.20", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "9467db479d1b0487c99733bb1e7944d32deded2c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/9467db479d1b0487c99733bb1e7944d32deded2c", + "reference": "9467db479d1b0487c99733bb1e7944d32deded2c", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.1", + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "myclabs/deep-copy": "^1.7", + "phar-io/manifest": "^1.0.2", + "phar-io/version": "^2.0", + "php": "^7.1", + "phpspec/prophecy": "^1.7", + "phpunit/php-code-coverage": "^6.0.7", + "phpunit/php-file-iterator": "^2.0.1", + "phpunit/php-text-template": "^1.2.1", + "phpunit/php-timer": "^2.1", + "sebastian/comparator": "^3.0", + "sebastian/diff": "^3.0", + "sebastian/environment": "^4.0", + "sebastian/exporter": "^3.1", + "sebastian/global-state": "^2.0", + "sebastian/object-enumerator": "^3.0.3", + "sebastian/resource-operations": "^2.0", + "sebastian/version": "^2.0.1" + }, + "conflict": { + "phpunit/phpunit-mock-objects": "*" + }, + "require-dev": { + "ext-pdo": "*" + }, + "suggest": { + "ext-soap": "*", + "ext-xdebug": "*", + "phpunit/php-invoker": "^2.0" + }, + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "7.5-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], + "time": "2020-01-08T08:45:45+00:00" + }, + { + "name": "psr/container", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", + "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "time": "2017-02-14T16:28:37+00:00" + }, + { + "name": "psr/log", + "version": "1.1.3", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc", + "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "Psr/Log/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "time": "2020-03-23T09:12:05+00:00" + }, + { + "name": "react/promise", + "version": "v2.8.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/promise.git", + "reference": "f3cff96a19736714524ca0dd1d4130de73dbbbc4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/promise/zipball/f3cff96a19736714524ca0dd1d4130de73dbbbc4", + "reference": "f3cff96a19736714524ca0dd1d4130de73dbbbc4", + "shasum": "" + }, + "require": { + "php": ">=5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "^7.0 || ^6.5 || ^5.7 || ^4.8.36" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\Promise\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com" + } + ], + "description": "A lightweight implementation of CommonJS Promises/A for PHP", + "keywords": [ + "promise", + "promises" + ], + "time": "2020-05-12T15:16:56+00:00" + }, + { + "name": "sebastian/code-unit-reverse-lookup", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", + "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.7 || ^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Looks up which function or method a line of code belongs to", + "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", + "time": "2017-03-04T06:30:41+00:00" + }, + { + "name": "sebastian/comparator", + "version": "3.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/5de4fc177adf9bce8df98d8d141a7559d7ccf6da", + "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da", + "shasum": "" + }, + "require": { + "php": "^7.1", + "sebastian/diff": "^3.0", + "sebastian/exporter": "^3.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "https://github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ], + "time": "2018-07-12T15:12:46+00:00" + }, + { + "name": "sebastian/diff", + "version": "3.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/720fcc7e9b5cf384ea68d9d930d480907a0c1a29", + "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.5 || ^8.0", + "symfony/process": "^2 || ^3.3 || ^4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff", + "udiff", + "unidiff", + "unified diff" + ], + "time": "2019-02-04T06:01:07+00:00" + }, + { + "name": "sebastian/environment", + "version": "4.2.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "464c90d7bdf5ad4e8a6aea15c091fec0603d4368" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/464c90d7bdf5ad4e8a6aea15c091fec0603d4368", + "reference": "464c90d7bdf5ad4e8a6aea15c091fec0603d4368", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.5" + }, + "suggest": { + "ext-posix": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.2-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "http://www.github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ], + "time": "2019-11-20T08:46:58+00:00" + }, + { + "name": "sebastian/exporter", + "version": "3.1.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/68609e1261d215ea5b21b7987539cbfbe156ec3e", + "reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e", + "shasum": "" + }, + "require": { + "php": "^7.0", + "sebastian/recursion-context": "^3.0" + }, + "require-dev": { + "ext-mbstring": "*", + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "http://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ], + "time": "2019-09-14T09:02:43+00:00" + }, + { + "name": "sebastian/global-state", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", + "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", + "shasum": "" + }, + "require": { + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "suggest": { + "ext-uopz": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Snapshotting of global state", + "homepage": "http://www.github.com/sebastianbergmann/global-state", + "keywords": [ + "global state" + ], + "time": "2017-04-27T15:39:26+00:00" + }, + { + "name": "sebastian/object-enumerator", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5", + "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5", + "shasum": "" + }, + "require": { + "php": "^7.0", + "sebastian/object-reflector": "^1.1.1", + "sebastian/recursion-context": "^3.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Traverses array structures and object graphs to enumerate all referenced objects", + "homepage": "https://github.com/sebastianbergmann/object-enumerator/", + "time": "2017-08-03T12:35:26+00:00" + }, + { + "name": "sebastian/object-reflector", + "version": "1.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "773f97c67f28de00d397be301821b06708fca0be" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be", + "reference": "773f97c67f28de00d397be301821b06708fca0be", + "shasum": "" + }, + "require": { + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Allows reflection of object attributes, including inherited and non-public ones", + "homepage": "https://github.com/sebastianbergmann/object-reflector/", + "time": "2017-03-29T09:07:27+00:00" + }, + { + "name": "sebastian/recursion-context", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", + "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", + "shasum": "" + }, + "require": { + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "time": "2017-03-03T06:23:57+00:00" + }, + { + "name": "sebastian/resource-operations", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/resource-operations.git", + "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/4d7a795d35b889bf80a0cc04e08d77cedfa917a9", + "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides a list of PHP built-in functions that operate on resources", + "homepage": "https://www.github.com/sebastianbergmann/resource-operations", + "time": "2018-10-04T04:07:39+00:00" + }, + { + "name": "sebastian/version", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", + "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", + "shasum": "" + }, + "require": { + "php": ">=5.6" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", + "time": "2016-10-03T07:35:21+00:00" + }, + { + "name": "seld/jsonlint", + "version": "1.8.2", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/jsonlint.git", + "reference": "590cfec960b77fd55e39b7d9246659e95dd6d337" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/590cfec960b77fd55e39b7d9246659e95dd6d337", + "reference": "590cfec960b77fd55e39b7d9246659e95dd6d337", + "shasum": "" + }, + "require": { + "php": "^5.3 || ^7.0 || ^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" + }, + "bin": [ + "bin/jsonlint" + ], + "type": "library", + "autoload": { + "psr-4": { + "Seld\\JsonLint\\": "src/Seld/JsonLint/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "JSON Linter", + "keywords": [ + "json", + "linter", + "parser", + "validator" + ], + "funding": [ + { + "url": "https://github.com/Seldaek", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/seld/jsonlint", + "type": "tidelift" + } + ], + "time": "2020-08-25T06:56:57+00:00" + }, + { + "name": "seld/phar-utils", + "version": "1.1.1", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/phar-utils.git", + "reference": "8674b1d84ffb47cc59a101f5d5a3b61e87d23796" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/phar-utils/zipball/8674b1d84ffb47cc59a101f5d5a3b61e87d23796", + "reference": "8674b1d84ffb47cc59a101f5d5a3b61e87d23796", + "shasum": "" + }, + "require": { + "php": ">=5.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Seld\\PharUtils\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be" + } + ], + "description": "PHAR file format utilities, for when PHP phars you up", + "keywords": [ + "phar" + ], + "time": "2020-07-07T18:42:57+00:00" + }, + { + "name": "symfony/console", + "version": "v5.1.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "186f395b256065ba9b890c0a4e48a91d598fa2cf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/186f395b256065ba9b890c0a4e48a91d598fa2cf", + "reference": "186f395b256065ba9b890c0a4e48a91d598fa2cf", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php73": "^1.8", + "symfony/polyfill-php80": "^1.15", + "symfony/service-contracts": "^1.1|^2", + "symfony/string": "^5.1" + }, + "conflict": { + "symfony/dependency-injection": "<4.4", + "symfony/dotenv": "<5.1", + "symfony/event-dispatcher": "<4.4", + "symfony/lock": "<4.4", + "symfony/process": "<4.4" + }, + "provide": { + "psr/log-implementation": "1.0" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/config": "^4.4|^5.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/event-dispatcher": "^4.4|^5.0", + "symfony/lock": "^4.4|^5.0", + "symfony/process": "^4.4|^5.0", + "symfony/var-dumper": "^4.4|^5.0" + }, + "suggest": { + "psr/log": "For using the console logger", + "symfony/event-dispatcher": "", + "symfony/lock": "", + "symfony/process": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.1-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Console Component", + "homepage": "https://symfony.com", + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-09-02T07:07:40+00:00" + }, + { + "name": "symfony/filesystem", + "version": "v5.1.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/filesystem.git", + "reference": "f7b9ed6142a34252d219801d9767dedbd711da1a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/f7b9ed6142a34252d219801d9767dedbd711da1a", + "reference": "f7b9ed6142a34252d219801d9767dedbd711da1a", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-ctype": "~1.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.1-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Filesystem\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Filesystem Component", + "homepage": "https://symfony.com", + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-08-21T17:19:47+00:00" + }, + { + "name": "symfony/finder", + "version": "v5.1.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/finder.git", + "reference": "2b765f0cf6612b3636e738c0689b29aa63088d5d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/finder/zipball/2b765f0cf6612b3636e738c0689b29aa63088d5d", + "reference": "2b765f0cf6612b3636e738c0689b29aa63088d5d", + "shasum": "" + }, + "require": { + "php": ">=7.2.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.1-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Finder\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Finder Component", + "homepage": "https://symfony.com", + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-08-17T10:01:29+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.18.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "1c302646f6efc070cd46856e600e5e0684d6b454" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/1c302646f6efc070cd46856e600e5e0684d6b454", + "reference": "1c302646f6efc070cd46856e600e5e0684d6b454", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.18-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-07-14T12:35:20+00:00" + }, + { + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.18.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "b740103edbdcc39602239ee8860f0f45a8eb9aa5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/b740103edbdcc39602239ee8860f0f45a8eb9aa5", + "reference": "b740103edbdcc39602239ee8860f0f45a8eb9aa5", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.18-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's grapheme_* functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "grapheme", + "intl", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-07-14T12:35:20+00:00" + }, + { + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.18.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "37078a8dd4a2a1e9ab0231af7c6cb671b2ed5a7e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/37078a8dd4a2a1e9ab0231af7c6cb671b2ed5a7e", + "reference": "37078a8dd4a2a1e9ab0231af7c6cb671b2ed5a7e", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.18-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, + "files": [ + "bootstrap.php" + ], + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's Normalizer class and related functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-07-14T12:35:20+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.18.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "a6977d63bf9a0ad4c65cd352709e230876f9904a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/a6977d63bf9a0ad4c65cd352709e230876f9904a", + "reference": "a6977d63bf9a0ad4c65cd352709e230876f9904a", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.18-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-07-14T12:35:20+00:00" + }, + { + "name": "symfony/polyfill-php73", + "version": "v1.18.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php73.git", + "reference": "fffa1a52a023e782cdcc221d781fe1ec8f87fcca" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fffa1a52a023e782cdcc221d781fe1ec8f87fcca", + "reference": "fffa1a52a023e782cdcc221d781fe1ec8f87fcca", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.18-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php73\\": "" + }, + "files": [ + "bootstrap.php" + ], + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-07-14T12:35:20+00:00" + }, + { + "name": "symfony/polyfill-php80", + "version": "v1.18.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "d87d5766cbf48d72388a9f6b85f280c8ad51f981" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/d87d5766cbf48d72388a9f6b85f280c8ad51f981", + "reference": "d87d5766cbf48d72388a9f6b85f280c8ad51f981", + "shasum": "" + }, + "require": { + "php": ">=7.0.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.18-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "files": [ + "bootstrap.php" + ], + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-07-14T12:35:20+00:00" + }, + { + "name": "symfony/process", + "version": "v5.1.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "1864216226af21eb76d9477f691e7cbf198e0402" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/1864216226af21eb76d9477f691e7cbf198e0402", + "reference": "1864216226af21eb76d9477f691e7cbf198e0402", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.15" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.1-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Process Component", + "homepage": "https://symfony.com", + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-07-23T08:36:24+00:00" + }, + { + "name": "symfony/service-contracts", + "version": "v2.2.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "d15da7ba4957ffb8f1747218be9e1a121fd298a1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/d15da7ba4957ffb8f1747218be9e1a121fd298a1", + "reference": "d15da7ba4957ffb8f1747218be9e1a121fd298a1", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "psr/container": "^1.0" + }, + "suggest": { + "symfony/service-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.2-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Service\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to writing services", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-09-07T11:33:47+00:00" + }, + { + "name": "symfony/string", + "version": "v5.1.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/string.git", + "reference": "0de4cc1e18bb596226c06a82e2e7e9bc6001a63a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/string/zipball/0de4cc1e18bb596226c06a82e2e7e9bc6001a63a", + "reference": "0de4cc1e18bb596226c06a82e2e7e9bc6001a63a", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "~1.15" + }, + "require-dev": { + "symfony/error-handler": "^4.4|^5.0", + "symfony/http-client": "^4.4|^5.0", + "symfony/translation-contracts": "^1.1|^2", + "symfony/var-exporter": "^4.4|^5.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.1-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\String\\": "" + }, + "files": [ + "Resources/functions.php" + ], + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony String component", + "homepage": "https://symfony.com", + "keywords": [ + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-08-17T07:48:54+00:00" + }, + { + "name": "theseer/tokenizer", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/theseer/tokenizer.git", + "reference": "75a63c33a8577608444246075ea0af0d052e452a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/75a63c33a8577608444246075ea0af0d052e452a", + "reference": "75a63c33a8577608444246075ea0af0d052e452a", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": "^7.2 || ^8.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + } + ], + "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2020-07-12T23:59:07+00:00" + }, + { + "name": "webmozart/assert", + "version": "1.9.1", + "source": { + "type": "git", + "url": "https://github.com/webmozart/assert.git", + "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozart/assert/zipball/bafc69caeb4d49c39fd0779086c03a3738cbb389", + "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389", + "shasum": "" + }, + "require": { + "php": "^5.3.3 || ^7.0 || ^8.0", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "phpstan/phpstan": "<0.12.20", + "vimeo/psalm": "<3.9.1" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.36 || ^7.5.13" + }, + "type": "library", + "autoload": { + "psr-4": { + "Webmozart\\Assert\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Assertions to validate method input/output with nice error messages.", + "keywords": [ + "assert", + "check", + "validate" + ], + "time": "2020-07-08T17:02:28+00:00" + } + ], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": { + "composer/composer": 20 + }, + "prefer-stable": false, + "prefer-lowest": false, + "platform": { + "composer-plugin-api": "^1.0 || ^2.0" + }, + "platform-dev": [], + "plugin-api-version": "1.1.0" +} diff --git a/kirby/vendor/getkirby/composer-installer/src/ComposerInstaller/CmsInstaller.php b/kirby/vendor/getkirby/composer-installer/src/ComposerInstaller/CmsInstaller.php index 71818eb..8e9dc0e 100755 --- a/kirby/vendor/getkirby/composer-installer/src/ComposerInstaller/CmsInstaller.php +++ b/kirby/vendor/getkirby/composer-installer/src/ComposerInstaller/CmsInstaller.php @@ -2,23 +2,23 @@ namespace Kirby\ComposerInstaller; -use InvalidArgumentException; use Composer\Config; use Composer\Package\PackageInterface; +use InvalidArgumentException; /** * @package Kirby Composer Installer * @author Lukas Bestle * @link https://getkirby.com - * @copyright Bastian Allgeier - * @license MIT + * @copyright Bastian Allgeier GmbH + * @license https://opensource.org/licenses/MIT */ class CmsInstaller extends Installer { /** * Decides if the installer supports the given type * - * @param string $packageType + * @param string $packageType * @return bool */ public function supports($packageType): bool @@ -29,8 +29,8 @@ class CmsInstaller extends Installer /** * Returns the installation path of a package * - * @param PackageInterface $package - * @return string path + * @param PackageInterface $package + * @return string path */ public function getInstallPath(PackageInterface $package): string { diff --git a/kirby/vendor/getkirby/composer-installer/src/ComposerInstaller/Installer.php b/kirby/vendor/getkirby/composer-installer/src/ComposerInstaller/Installer.php index 5d698ac..6d0dca4 100755 --- a/kirby/vendor/getkirby/composer-installer/src/ComposerInstaller/Installer.php +++ b/kirby/vendor/getkirby/composer-installer/src/ComposerInstaller/Installer.php @@ -2,24 +2,25 @@ namespace Kirby\ComposerInstaller; -use RuntimeException; use Composer\Installer\LibraryInstaller; use Composer\Package\PackageInterface; use Composer\Repository\InstalledRepositoryInterface; +use React\Promise\PromiseInterface; +use RuntimeException; /** * @package Kirby Composer Installer * @author Lukas Bestle * @link https://getkirby.com - * @copyright Bastian Allgeier - * @license MIT + * @copyright Bastian Allgeier GmbH + * @license https://opensource.org/licenses/MIT */ class Installer extends LibraryInstaller { /** * Decides if the installer supports the given type * - * @param string $packageType + * @param string $packageType * @return bool */ public function supports($packageType): bool @@ -30,34 +31,54 @@ class Installer extends LibraryInstaller /** * Installs specific package. * - * @param InstalledRepositoryInterface $repo repository in which to check - * @param PackageInterface $package package instance + * @param InstalledRepositoryInterface $repo repository in which to check + * @param PackageInterface $package package instance */ public function install(InstalledRepositoryInterface $repo, PackageInterface $package) { // first install the package normally... - parent::install($repo, $package); + $promise = parent::install($repo, $package); // ...then run custom code - $this->postInstall($package); + $postInstall = function () use ($package) { + $this->postInstall($package); + }; + + // Composer 2 in async mode + if ($promise instanceof PromiseInterface) { + return $promise->then($postInstall); + } + + // Composer 1 or Composer 2 without async + $postInstall(); } /** * Updates specific package. * - * @param InstalledRepositoryInterface $repo repository in which to check - * @param PackageInterface $initial already installed package version - * @param PackageInterface $target updated version + * @param InstalledRepositoryInterface $repo repository in which to check + * @param PackageInterface $initial already installed package version + * @param PackageInterface $target updated version * * @throws InvalidArgumentException if $initial package is not installed */ public function update(InstalledRepositoryInterface $repo, PackageInterface $initial, PackageInterface $target) { // first update the package normally... - parent::update($repo, $initial, $target); + $promise = parent::update($repo, $initial, $target); // ...then run custom code - $this->postInstall($target); + $postInstall = function () use ($target) { + $this->postInstall($target); + }; + + // Composer 2 in async mode + if ($promise instanceof PromiseInterface) { + return $promise->then($postInstall); + } + + // Composer 1 or Composer 2 without async + $postInstall(); } /** diff --git a/kirby/vendor/getkirby/composer-installer/src/ComposerInstaller/Plugin.php b/kirby/vendor/getkirby/composer-installer/src/ComposerInstaller/Plugin.php index 79029f2..041dc4f 100755 --- a/kirby/vendor/getkirby/composer-installer/src/ComposerInstaller/Plugin.php +++ b/kirby/vendor/getkirby/composer-installer/src/ComposerInstaller/Plugin.php @@ -10,15 +10,15 @@ use Composer\Plugin\PluginInterface; * @package Kirby Composer Installer * @author Lukas Bestle * @link https://getkirby.com - * @copyright Bastian Allgeier - * @license MIT + * @copyright Bastian Allgeier GmbH + * @license https://opensource.org/licenses/MIT */ class Plugin implements PluginInterface { /** * Apply plugin modifications to Composer * - * @param Composer $composer + * @param Composer $composer * @param IOInterface $io */ public function activate(Composer $composer, IOInterface $io) @@ -27,4 +27,28 @@ class Plugin implements PluginInterface $installationManager->addInstaller(new CmsInstaller($io, $composer)); $installationManager->addInstaller(new PluginInstaller($io, $composer)); } + + /** + * Remove any hooks from Composer + * @codeCoverageIgnore + * + * @param Composer $composer + * @param IOInterface $io + */ + public function deactivate(Composer $composer, IOInterface $io) + { + // nothing to do + } + + /** + * Prepare the plugin to be uninstalled + * @codeCoverageIgnore + * + * @param Composer $composer + * @param IOInterface $io + */ + public function uninstall(Composer $composer, IOInterface $io) + { + // nothing to do + } } diff --git a/kirby/vendor/getkirby/composer-installer/src/ComposerInstaller/PluginInstaller.php b/kirby/vendor/getkirby/composer-installer/src/ComposerInstaller/PluginInstaller.php index 7aedd89..cfce0f8 100755 --- a/kirby/vendor/getkirby/composer-installer/src/ComposerInstaller/PluginInstaller.php +++ b/kirby/vendor/getkirby/composer-installer/src/ComposerInstaller/PluginInstaller.php @@ -8,15 +8,15 @@ use Composer\Package\PackageInterface; * @package Kirby Composer Installer * @author Lukas Bestle * @link https://getkirby.com - * @copyright Bastian Allgeier - * @license MIT + * @copyright Bastian Allgeier GmbH + * @license https://opensource.org/licenses/MIT */ class PluginInstaller extends Installer { /** * Decides if the installer supports the given type * - * @param string $packageType + * @param string $packageType * @return bool */ public function supports($packageType): bool @@ -27,8 +27,8 @@ class PluginInstaller extends Installer /** * Returns the installation path of a package * - * @param PackageInterface $package - * @return string path + * @param PackageInterface $package + * @return string path */ public function getInstallPath(PackageInterface $package): string { @@ -85,7 +85,7 @@ class PluginInstaller extends Installer * otherwise (if the Pluginkit is not yet supported by the plugin) * the installer will fall back to the behavior of the LibraryInstaller * - * @param PackageInterface $package + * @param PackageInterface $package * @return bool */ protected function supportsPluginkit(PackageInterface $package): bool diff --git a/kirby/vendor/laminas/laminas-zendframework-bridge/src/Autoloader.php b/kirby/vendor/laminas/laminas-zendframework-bridge/src/Autoloader.php index dd7dae3..6048766 100755 --- a/kirby/vendor/laminas/laminas-zendframework-bridge/src/Autoloader.php +++ b/kirby/vendor/laminas/laminas-zendframework-bridge/src/Autoloader.php @@ -66,7 +66,7 @@ class Autoloader */ private static function getClassLoader() { - if (file_exists(getenv('COMPOSER_VENDOR_DIR') . '/autoload.php')) { + if (getenv('COMPOSER_VENDOR_DIR') && file_exists(getenv('COMPOSER_VENDOR_DIR') . '/autoload.php')) { return include getenv('COMPOSER_VENDOR_DIR') . '/autoload.php'; } diff --git a/kirby/vendor/phpmailer/phpmailer/get_oauth_token.php b/kirby/vendor/phpmailer/phpmailer/get_oauth_token.php index 1237b57..560d364 100755 --- a/kirby/vendor/phpmailer/phpmailer/get_oauth_token.php +++ b/kirby/vendor/phpmailer/phpmailer/get_oauth_token.php @@ -1,4 +1,5 @@ * @author Andy Prevost (codeworxtech) * @author Brent R. Matzelle (original founder) - * @copyright 2012 - 2017 Marcus Bointon + * @copyright 2012 - 2020 Marcus Bointon * @copyright 2010 - 2012 Jim Jagielski * @copyright 2004 - 2009 Andy Prevost * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License @@ -16,6 +17,7 @@ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. */ + /** * Get an OAuth2 token from an OAuth2 provider. * * Install this script on your server so that it's accessible @@ -44,7 +46,7 @@ use Hayageek\OAuth2\Client\Provider\Yahoo; use Stevenmaguire\OAuth2\Client\Provider\Microsoft; if (!isset($_GET['code']) && !isset($_GET['provider'])) { -?> + ?> Select Provider:
    Google
    @@ -52,8 +54,8 @@ if (!isset($_GET['code']) && !isset($_GET['provider'])) { Microsoft/Outlook/Hotmail/Live/Office365
    - - * Rewrite and extension of the work by Mikael Stokkebro - * + * Rewrite and extension of the work by Mikael Stokkebro + * */ $PHPMAILER_LANG['authenticate'] = 'SMTP fejl: Login mislykkedes.'; diff --git a/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-de.php b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-de.php index aa987a9..e7e59d2 100755 --- a/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-de.php +++ b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-de.php @@ -1,4 +1,5 @@ */ - + $PHPMAILER_LANG['authenticate'] = 'SMTP त्रुटि: प्रामाणिकता की जांच नहीं हो सका। '; $PHPMAILER_LANG['connect_host'] = 'SMTP त्रुटि: SMTP सर्वर से कनेक्ट नहीं हो सका। '; $PHPMAILER_LANG['data_not_accepted'] = 'SMTP त्रुटि: डेटा स्वीकार नहीं किया जाता है। '; diff --git a/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-hr.php b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-hr.php index 3822920..cacb6c3 100755 --- a/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-hr.php +++ b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-hr.php @@ -1,4 +1,5 @@ */ - + $PHPMAILER_LANG['authenticate'] = 'SMTP -ի սխալ: չհաջողվեց ստուգել իսկությունը.'; $PHPMAILER_LANG['connect_host'] = 'SMTP -ի սխալ: չհաջողվեց կապ հաստատել SMTP սերվերի հետ.'; $PHPMAILER_LANG['data_not_accepted'] = 'SMTP -ի սխալ: տվյալները ընդունված չեն.'; diff --git a/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-id.php b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-id.php index ba6ca5f..212a11f 100755 --- a/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-id.php +++ b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-id.php @@ -1,9 +1,11 @@ * @author @januridp + * @author Ian Mustafa */ $PHPMAILER_LANG['authenticate'] = 'Kesalahan SMTP: Tidak dapat mengotentikasi.'; @@ -11,17 +13,19 @@ $PHPMAILER_LANG['connect_host'] = 'Kesalahan SMTP: Tidak dapat terhubung $PHPMAILER_LANG['data_not_accepted'] = 'Kesalahan SMTP: Data tidak diterima.'; $PHPMAILER_LANG['empty_message'] = 'Isi pesan kosong'; $PHPMAILER_LANG['encoding'] = 'Pengkodean karakter tidak dikenali: '; -$PHPMAILER_LANG['execute'] = 'Tidak dapat menjalankan proses : '; -$PHPMAILER_LANG['file_access'] = 'Tidak dapat mengakses berkas : '; -$PHPMAILER_LANG['file_open'] = 'Kesalahan File: Berkas tidak dapat dibuka : '; -$PHPMAILER_LANG['from_failed'] = 'Alamat pengirim berikut mengakibatkan kesalahan : '; -$PHPMAILER_LANG['instantiate'] = 'Tidak dapat menginisialisasi fungsi surel'; -$PHPMAILER_LANG['invalid_address'] = 'Gagal terkirim, alamat surel tidak benar : '; -$PHPMAILER_LANG['provide_address'] = 'Harus disediakan minimal satu alamat tujuan'; +$PHPMAILER_LANG['execute'] = 'Tidak dapat menjalankan proses: '; +$PHPMAILER_LANG['file_access'] = 'Tidak dapat mengakses berkas: '; +$PHPMAILER_LANG['file_open'] = 'Kesalahan Berkas: Berkas tidak dapat dibuka: '; +$PHPMAILER_LANG['from_failed'] = 'Alamat pengirim berikut mengakibatkan kesalahan: '; +$PHPMAILER_LANG['instantiate'] = 'Tidak dapat menginisialisasi fungsi surel.'; +$PHPMAILER_LANG['invalid_address'] = 'Gagal terkirim, alamat surel tidak sesuai: '; +$PHPMAILER_LANG['invalid_hostentry'] = 'Gagal terkirim, entri host tidak sesuai: '; +$PHPMAILER_LANG['invalid_host'] = 'Gagal terkirim, host tidak sesuai: '; +$PHPMAILER_LANG['provide_address'] = 'Harus tersedia minimal satu alamat tujuan'; $PHPMAILER_LANG['mailer_not_supported'] = ' mailer tidak didukung'; -$PHPMAILER_LANG['recipients_failed'] = 'Kesalahan SMTP: Alamat tujuan berikut menghasilkan kesalahan : '; -$PHPMAILER_LANG['signing'] = 'Kesalahan dalam tanda tangan : '; +$PHPMAILER_LANG['recipients_failed'] = 'Kesalahan SMTP: Alamat tujuan berikut menyebabkan kesalahan: '; +$PHPMAILER_LANG['signing'] = 'Kesalahan dalam penandatangan SSL: '; $PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() gagal.'; -$PHPMAILER_LANG['smtp_error'] = 'Kesalahan pada pelayan SMTP : '; -$PHPMAILER_LANG['variable_set'] = 'Tidak dapat mengatur atau mengatur ulang variable : '; -$PHPMAILER_LANG['extension_missing'] = 'Ekstensi hilang: '; +$PHPMAILER_LANG['smtp_error'] = 'Kesalahan pada pelayan SMTP: '; +$PHPMAILER_LANG['variable_set'] = 'Tidak dapat mengatur atau mengatur ulang variabel: '; +$PHPMAILER_LANG['extension_missing'] = 'Ekstensi PHP tidak tersedia: '; diff --git a/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-it.php b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-it.php index e67b6f7..08a6b73 100755 --- a/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-it.php +++ b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-it.php @@ -1,4 +1,5 @@ */ + $PHPMAILER_LANG['authenticate'] = 'Hadisoana SMTP: Tsy nahomby ny fanamarinana.'; $PHPMAILER_LANG['connect_host'] = 'SMTP Error: Tsy afaka mampifandray amin\'ny mpampiantrano SMTP.'; $PHPMAILER_LANG['data_not_accepted'] = 'SMTP diso: tsy voarakitra ny angona.'; diff --git a/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-ms.php b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-ms.php index f12a6ad..71db338 100755 --- a/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-ms.php +++ b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-ms.php @@ -1,4 +1,5 @@ * @author Filip Š + * @author Blaž Oražem */ $PHPMAILER_LANG['authenticate'] = 'SMTP napaka: Avtentikacija ni uspela.'; @@ -17,8 +19,10 @@ $PHPMAILER_LANG['file_open'] = 'Ne morem odpreti datoteke: '; $PHPMAILER_LANG['from_failed'] = 'Neveljaven e-naslov pošiljatelja: '; $PHPMAILER_LANG['instantiate'] = 'Ne morem inicializirati mail funkcije.'; $PHPMAILER_LANG['invalid_address'] = 'E-poštno sporočilo ni bilo poslano. E-naslov je neveljaven: '; +$PHPMAILER_LANG['invalid_hostentry'] = 'Neveljaven vnos gostitelja: '; +$PHPMAILER_LANG['invalid_host'] = 'Neveljaven gostitelj: '; $PHPMAILER_LANG['mailer_not_supported'] = ' mailer ni podprt.'; -$PHPMAILER_LANG['provide_address'] = 'Prosim vnesite vsaj enega naslovnika.'; +$PHPMAILER_LANG['provide_address'] = 'Prosimo, vnesite vsaj enega naslovnika.'; $PHPMAILER_LANG['recipients_failed'] = 'SMTP napaka: Sledeči naslovniki so neveljavni: '; $PHPMAILER_LANG['signing'] = 'Napaka pri podpisovanju: '; $PHPMAILER_LANG['smtp_connect_failed'] = 'Ne morem vzpostaviti povezave s SMTP strežnikom.'; diff --git a/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-sr.php b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-sr.php index 34c1e18..0b5280f 100755 --- a/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-sr.php +++ b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-sr.php @@ -1,4 +1,5 @@ + * @author Adriane Justine Tan */ - + $PHPMAILER_LANG['authenticate'] = 'SMTP Error: Hindi mapatotohanan.'; $PHPMAILER_LANG['connect_host'] = 'SMTP Error: Hindi makakonekta sa SMTP host.'; -$PHPMAILER_LANG['data_not_accepted'] = 'SMTP Error: Ang datos ay hindi maaaring matatanggap.'; +$PHPMAILER_LANG['data_not_accepted'] = 'SMTP Error: Ang datos ay hindi naitanggap.'; $PHPMAILER_LANG['empty_message'] = 'Walang laman ang mensahe'; $PHPMAILER_LANG['encoding'] = 'Hindi alam ang encoding: '; $PHPMAILER_LANG['execute'] = 'Hindi maisasagawa: '; $PHPMAILER_LANG['file_access'] = 'Hindi ma-access ang file: '; -$PHPMAILER_LANG['file_open'] = 'Hindi mabuksan ang file: '; +$PHPMAILER_LANG['file_open'] = 'File Error: Hindi mabuksan ang file: '; $PHPMAILER_LANG['from_failed'] = 'Ang sumusunod na address ay nabigo: '; -$PHPMAILER_LANG['instantiate'] = 'Hindi maaaring magbigay ng institusyon ang mail'; +$PHPMAILER_LANG['instantiate'] = 'Hindi maisimulan ang instance ng mail function.'; $PHPMAILER_LANG['invalid_address'] = 'Hindi wasto ang address na naibigay: '; -$PHPMAILER_LANG['mailer_not_supported'] = 'Ang mailer ay hindi suportado'; -$PHPMAILER_LANG['provide_address'] = 'Kailangan mong magbigay ng kahit isang email address na tatanggap'; +$PHPMAILER_LANG['mailer_not_supported'] = 'Ang mailer ay hindi suportado.'; +$PHPMAILER_LANG['provide_address'] = 'Kailangan mong magbigay ng kahit isang email address na tatanggap.'; $PHPMAILER_LANG['recipients_failed'] = 'SMTP Error: Ang mga sumusunod na tatanggap ay nabigo: '; -$PHPMAILER_LANG['signing'] = 'Hindi ma-sign'; -$PHPMAILER_LANG['smtp_connect_failed'] = 'Ang SMTP connect() ay nabigo'; -$PHPMAILER_LANG['smtp_error'] = 'Ang server ng SMTP ay nabigo'; -$PHPMAILER_LANG['variable_set'] = 'Hindi matatakda ang mga variables: '; -$PHPMAILER_LANG['extension_missing'] = 'Nawawala ang extension'; +$PHPMAILER_LANG['signing'] = 'Hindi ma-sign: '; +$PHPMAILER_LANG['smtp_connect_failed'] = 'Ang SMTP connect() ay nabigo.'; +$PHPMAILER_LANG['smtp_error'] = 'Ang server ng SMTP ay nabigo: '; +$PHPMAILER_LANG['variable_set'] = 'Hindi matatakda o ma-reset ang mga variables: '; +$PHPMAILER_LANG['extension_missing'] = 'Nawawala ang extension: '; diff --git a/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-tr.php b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-tr.php index cfe8eaa..f938f80 100755 --- a/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-tr.php +++ b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-tr.php @@ -1,4 +1,5 @@ * @author Andy Prevost (codeworxtech) * @author Brent R. Matzelle (original founder) - * @copyright 2012 - 2017 Marcus Bointon + * @copyright 2012 - 2020 Marcus Bointon * @copyright 2010 - 2012 Jim Jagielski * @copyright 2004 - 2009 Andy Prevost * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License diff --git a/kirby/vendor/phpmailer/phpmailer/src/OAuth.php b/kirby/vendor/phpmailer/phpmailer/src/OAuth.php index 0271963..07fde4c 100755 --- a/kirby/vendor/phpmailer/phpmailer/src/OAuth.php +++ b/kirby/vendor/phpmailer/phpmailer/src/OAuth.php @@ -1,4 +1,5 @@ * @author Andy Prevost (codeworxtech) * @author Brent R. Matzelle (original founder) - * @copyright 2012 - 2015 Marcus Bointon + * @copyright 2012 - 2020 Marcus Bointon * @copyright 2010 - 2012 Jim Jagielski * @copyright 2004 - 2009 Andy Prevost * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License diff --git a/kirby/vendor/phpmailer/phpmailer/src/PHPMailer.php b/kirby/vendor/phpmailer/phpmailer/src/PHPMailer.php index ed14d7c..c8fc1a8 100755 --- a/kirby/vendor/phpmailer/phpmailer/src/PHPMailer.php +++ b/kirby/vendor/phpmailer/phpmailer/src/PHPMailer.php @@ -1,4 +1,5 @@ * @author Andy Prevost (codeworxtech) * @author Brent R. Matzelle (original founder) - * @copyright 2012 - 2019 Marcus Bointon + * @copyright 2012 - 2020 Marcus Bointon * @copyright 2010 - 2012 Jim Jagielski * @copyright 2004 - 2009 Andy Prevost * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License @@ -388,11 +389,11 @@ class PHPMailer * SMTP class debug output mode. * Debug output level. * Options: - * * SMTP::DEBUG_OFF: No output - * * SMTP::DEBUG_CLIENT: Client messages - * * SMTP::DEBUG_SERVER: Client and server messages - * * SMTP::DEBUG_CONNECTION: As SERVER plus connection status - * * SMTP::DEBUG_LOWLEVEL: Noisy, low-level data output, rarely needed + * @see SMTP::DEBUG_OFF: No output + * @see SMTP::DEBUG_CLIENT: Client messages + * @see SMTP::DEBUG_SERVER: Client and server messages + * @see SMTP::DEBUG_CONNECTION: As SERVER plus connection status + * @see SMTP::DEBUG_LOWLEVEL: Noisy, low-level data output, rarely needed * * @see SMTP::$do_debug * @@ -441,6 +442,8 @@ class PHPMailer * Only supported in `mail` and `sendmail` transports, not in SMTP. * * @var bool + * + * @deprecated 6.0.0 PHPMailer isn't a mailing list manager! */ public $SingleTo = false; @@ -745,7 +748,7 @@ class PHPMailer * * @var string */ - const VERSION = '6.1.6'; + const VERSION = '6.2.0'; /** * Error severity: message only, continue processing. @@ -897,6 +900,7 @@ class PHPMailer switch ($this->Debugoutput) { case 'error_log': //Don't output, just log + /** @noinspection ForgottenDebugOutputInspection */ error_log($str); break; case 'html': @@ -1182,9 +1186,11 @@ class PHPMailer //Use this built-in parser if it's available $list = imap_rfc822_parse_adrlist($addrstr, ''); foreach ($list as $address) { - if (('.SYNTAX-ERROR.' !== $address->host) && static::validateAddress( - $address->mailbox . '@' . $address->host - )) { + if ( + ('.SYNTAX-ERROR.' !== $address->host) && static::validateAddress( + $address->mailbox . '@' . $address->host + ) + ) { $addresses[] = [ 'name' => (property_exists($address, 'personal') ? $address->personal : ''), 'address' => $address->mailbox . '@' . $address->host, @@ -1238,7 +1244,8 @@ class PHPMailer $name = trim(preg_replace('/[\r\n]+/', '', $name)); //Strip breaks and trim // Don't validate now addresses with IDN. Will be done in send(). $pos = strrpos($address, '@'); - if ((false === $pos) + if ( + (false === $pos) || ((!$this->has8bitChars(substr($address, ++$pos)) || !static::idnSupported()) && !static::validateAddress($address)) ) { @@ -1307,7 +1314,7 @@ class PHPMailer $patternselect = static::$validator; } if (is_callable($patternselect)) { - return $patternselect($address); + return call_user_func($patternselect, $address); } //Reject line breaks in addresses; it's valid RFC5322, but not RFC5321 if (strpos($address, "\n") !== false || strpos($address, "\r") !== false) { @@ -1348,7 +1355,7 @@ class PHPMailer /* * This is the pattern used in the HTML5 spec for validation of 'email' type form input elements. * - * @see http://www.whatwg.org/specs/web-apps/current-work/#e-mail-state-(type=email) + * @see https://html.spec.whatwg.org/#e-mail-state-(type=email) */ return (bool) preg_match( '/^[a-zA-Z0-9.!#$%&\'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}' . @@ -1390,7 +1397,8 @@ class PHPMailer { // Verify we have required functions, CharSet, and at-sign. $pos = strrpos($address, '@'); - if (!empty($this->CharSet) && + if ( + !empty($this->CharSet) && false !== $pos && static::idnSupported() ) { @@ -1452,8 +1460,9 @@ class PHPMailer */ public function preSend() { - if ('smtp' === $this->Mailer - || ('mail' === $this->Mailer && stripos(PHP_OS, 'WIN') === 0) + if ( + 'smtp' === $this->Mailer + || ('mail' === $this->Mailer && (PHP_VERSION_ID >= 80000 || stripos(PHP_OS, 'WIN') === 0)) ) { //SMTP mandates RFC-compliant line endings //and it's also used with mail() on Windows @@ -1463,7 +1472,8 @@ class PHPMailer static::setLE(PHP_EOL); } //Check for buggy PHP versions that add a header with an incorrect line break - if ('mail' === $this->Mailer + if ( + 'mail' === $this->Mailer && ((PHP_VERSION_ID >= 70000 && PHP_VERSION_ID < 70017) || (PHP_VERSION_ID >= 70100 && PHP_VERSION_ID < 70103)) && ini_get('mail.add_x_header') === '1' @@ -1550,7 +1560,8 @@ class PHPMailer } // Sign with DKIM if enabled - if (!empty($this->DKIM_domain) + if ( + !empty($this->DKIM_domain) && !empty($this->DKIM_selector) && (!empty($this->DKIM_private_string) || (!empty($this->DKIM_private) @@ -1607,6 +1618,9 @@ class PHPMailer return $this->mailSend($this->MIMEHeader, $this->MIMEBody); } } catch (Exception $exc) { + if ($this->Mailer === 'smtp' && $this->SMTPKeepAlive == true) { + $this->smtp->reset(); + } $this->setError($exc->getMessage()); $this->edebug($exc->getMessage()); if ($this->exceptions) { @@ -1711,7 +1725,8 @@ class PHPMailer protected static function isShellSafe($string) { // Future-proof - if (escapeshellcmd($string) !== $string + if ( + escapeshellcmd($string) !== $string || !in_array(escapeshellarg($string), ["'$string'", "\"$string\""]) ) { return false; @@ -1747,6 +1762,23 @@ class PHPMailer return !preg_match('#^[a-z]+://#i', $path); } + /** + * Check whether a file path is safe, accessible, and readable. + * + * @param string $path A relative or absolute path to a file + * + * @return bool + */ + protected static function fileIsAccessible($path) + { + $readable = file_exists($path); + //If not a UNC path (expected to start with \\), check read permission, see #2069 + if (strpos($path, '\\\\') !== 0) { + $readable = $readable && is_readable($path); + } + return static::isPermittedPath($path) && $readable; + } + /** * Send mail using the PHP mail() function. * @@ -1878,7 +1910,7 @@ class PHPMailer $isSent = true; } - $callbacks[] = ['issent'=>$isSent, 'to'=>$to[0]]; + $callbacks[] = ['issent' => $isSent, 'to' => $to[0]]; } } @@ -1958,11 +1990,13 @@ class PHPMailer foreach ($hosts as $hostentry) { $hostinfo = []; - if (!preg_match( - '/^(?:(ssl|tls):\/\/)?(.+?)(?::(\d+))?$/', - trim($hostentry), - $hostinfo - )) { + if ( + !preg_match( + '/^(?:(ssl|tls):\/\/)?(.+?)(?::(\d+))?$/', + trim($hostentry), + $hostinfo + ) + ) { $this->edebug($this->lang('invalid_hostentry') . ' ' . trim($hostentry)); // Not a valid host entry continue; @@ -2000,7 +2034,12 @@ class PHPMailer } $host = $hostinfo[2]; $port = $this->Port; - if (array_key_exists(3, $hostinfo) && is_numeric($hostinfo[3]) && $hostinfo[3] > 0 && $hostinfo[3] < 65536) { + if ( + array_key_exists(3, $hostinfo) && + is_numeric($hostinfo[3]) && + $hostinfo[3] > 0 && + $hostinfo[3] < 65536 + ) { $port = (int) $hostinfo[3]; } if ($this->smtp->connect($prefix . $host, $port, $this->Timeout, $options)) { @@ -2026,12 +2065,14 @@ class PHPMailer // We must resend EHLO after TLS negotiation $this->smtp->hello($hello); } - if ($this->SMTPAuth && !$this->smtp->authenticate( - $this->Username, - $this->Password, - $this->AuthType, - $this->oauth - )) { + if ( + $this->SMTPAuth && !$this->smtp->authenticate( + $this->Username, + $this->Password, + $this->AuthType, + $this->oauth + ) + ) { throw new Exception($this->lang('authenticate')); } @@ -2089,7 +2130,7 @@ class PHPMailer 'am' => 'hy', ]; - if (isset($renamed_langcodes[$langcode])) { + if (array_key_exists($langcode, $renamed_langcodes)) { $langcode = $renamed_langcodes[$langcode]; } @@ -2130,7 +2171,7 @@ class PHPMailer // There is no English translation file if ('en' !== $langcode) { // Make sure language file path is readable - if (!static::isPermittedPath($lang_file) || !file_exists($lang_file)) { + if (!static::fileIsAccessible($lang_file)) { $foundlang = false; } else { // Overwrite language-specific strings. @@ -2378,21 +2419,18 @@ class PHPMailer $result .= $this->headerLine('Date', '' === $this->MessageDate ? self::rfcDate() : $this->MessageDate); - // To be created automatically by mail() - if ($this->SingleTo) { - if ('mail' !== $this->Mailer) { + // The To header is created automatically by mail(), so needs to be omitted here + if ('mail' !== $this->Mailer) { + if ($this->SingleTo) { foreach ($this->to as $toaddr) { $this->SingleToArray[] = $this->addrFormat($toaddr); } - } - } elseif (count($this->to) > 0) { - if ('mail' !== $this->Mailer) { + } elseif (count($this->to) > 0) { $result .= $this->addrAppend('To', $this->to); + } elseif (count($this->cc) === 0) { + $result .= $this->headerLine('To', 'undisclosed-recipients:;'); } - } elseif (count($this->cc) === 0) { - $result .= $this->headerLine('To', 'undisclosed-recipients:;'); } - $result .= $this->addrAppend('From', [[trim($this->From), $this->FromName]]); // sendmail and mail() extract Cc from the header before sending @@ -2401,7 +2439,8 @@ class PHPMailer } // sendmail and mail() extract Bcc from the header before sending - if (( + if ( + ( 'sendmail' === $this->Mailer || 'qmail' === $this->Mailer || 'mail' === $this->Mailer ) && count($this->bcc) > 0 @@ -2947,7 +2986,7 @@ class PHPMailer * @param string $path Path to the attachment * @param string $name Overrides the attachment name * @param string $encoding File encoding (see $Encoding) - * @param string $type File extension (MIME) type + * @param string $type MIME type, e.g. `image/jpeg`; determined automatically from $path if not specified * @param string $disposition Disposition to use * * @throws Exception @@ -2962,7 +3001,7 @@ class PHPMailer $disposition = 'attachment' ) { try { - if (!static::isPermittedPath($path) || !@is_file($path) || !is_readable($path)) { + if (!static::fileIsAccessible($path)) { throw new Exception($this->lang('file_access') . $path, self::STOP_CONTINUE); } @@ -2975,7 +3014,6 @@ class PHPMailer if ('' === $name) { $name = $filename; } - if (!$this->validateEncoding($encoding)) { throw new Exception($this->lang('encoding') . $encoding); } @@ -3137,7 +3175,7 @@ class PHPMailer protected function encodeFile($path, $encoding = self::ENCODING_BASE64) { try { - if (!static::isPermittedPath($path) || !file_exists($path) || !is_readable($path)) { + if (!static::fileIsAccessible($path)) { throw new Exception($this->lang('file_open') . $path, self::STOP_CONTINUE); } $file_buffer = file_get_contents($path); @@ -3523,7 +3561,7 @@ class PHPMailer $disposition = 'inline' ) { try { - if (!static::isPermittedPath($path) || !@is_file($path) || !is_readable($path)) { + if (!static::fileIsAccessible($path)) { throw new Exception($this->lang('file_access') . $path, self::STOP_CONTINUE); } @@ -3872,7 +3910,8 @@ class PHPMailer public static function isValidHost($host) { //Simple syntax limits - if (empty($host) + if ( + empty($host) || !is_string($host) || strlen($host) > 256 || !preg_match('/^([a-zA-Z\d.-]*|\[[a-fA-F\d:]+])$/', $host) @@ -3990,7 +4029,8 @@ class PHPMailer * @param string $message HTML message string * @param string $basedir Absolute path to a base directory to prepend to relative paths to images * @param bool|callable $advanced Whether to use the internal HTML to text converter - * or your own custom converter @return string $message The transformed message Body + * or your own custom converter + * @return string The transformed message body * * @throws Exception * @@ -4037,7 +4077,8 @@ class PHPMailer ); continue; } - if (// Only process relative URLs if a basedir is provided (i.e. no absolute local paths) + if ( + // Only process relative URLs if a basedir is provided (i.e. no absolute local paths) !empty($basedir) // Ignore URLs containing parent dir traversal (..) && (strpos($url, '..') === false) @@ -4059,13 +4100,14 @@ class PHPMailer if (strlen($directory) > 1 && '/' !== substr($directory, -1)) { $directory .= '/'; } - if ($this->addEmbeddedImage( - $basedir . $directory . $filename, - $cid, - $filename, - static::ENCODING_BASE64, - static::_mime_types((string) static::mb_pathinfo($filename, PATHINFO_EXTENSION)) - ) + if ( + $this->addEmbeddedImage( + $basedir . $directory . $filename, + $cid, + $filename, + static::ENCODING_BASE64, + static::_mime_types((string) static::mb_pathinfo($filename, PATHINFO_EXTENSION)) + ) ) { $message = preg_replace( '/' . $images[1][$imgindex] . '=["\']' . preg_quote($url, '/') . '["\']/Ui', @@ -4114,7 +4156,7 @@ class PHPMailer public function html2text($html, $advanced = false) { if (is_callable($advanced)) { - return $advanced($html); + return call_user_func($advanced, $html); } return html_entity_decode( @@ -4213,6 +4255,7 @@ class PHPMailer 'tiff' => 'image/tiff', 'tif' => 'image/tiff', 'webp' => 'image/webp', + 'avif' => 'image/avif', 'heif' => 'image/heif', 'heifs' => 'image/heif-sequence', 'heic' => 'image/heic', @@ -4483,11 +4526,15 @@ class PHPMailer $privKey = openssl_pkey_get_private($privKeyStr); } if (openssl_sign($signHeader, $signature, $privKey, 'sha256WithRSAEncryption')) { - openssl_pkey_free($privKey); + if (PHP_MAJOR_VERSION < 8) { + openssl_pkey_free($privKey); + } return base64_encode($signature); } - openssl_pkey_free($privKey); + if (PHP_MAJOR_VERSION < 8) { + openssl_pkey_free($privKey); + } return ''; } diff --git a/kirby/vendor/phpmailer/phpmailer/src/POP3.php b/kirby/vendor/phpmailer/phpmailer/src/POP3.php index 7d4c88f..235e637 100755 --- a/kirby/vendor/phpmailer/phpmailer/src/POP3.php +++ b/kirby/vendor/phpmailer/phpmailer/src/POP3.php @@ -1,4 +1,5 @@ * @author Andy Prevost (codeworxtech) * @author Brent R. Matzelle (original founder) - * @copyright 2012 - 2019 Marcus Bointon + * @copyright 2012 - 2020 Marcus Bointon * @copyright 2010 - 2012 Jim Jagielski * @copyright 2004 - 2009 Andy Prevost * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License @@ -45,7 +46,7 @@ class POP3 * * @var string */ - const VERSION = '6.1.6'; + const VERSION = '6.2.0'; /** * Default POP3 port number. @@ -62,12 +63,16 @@ class POP3 const DEFAULT_TIMEOUT = 30; /** - * Debug display level. - * Options: 0 = no, 1+ = yes. + * POP3 class debug output mode. + * Debug output level. + * Options: + * @see POP3::DEBUG_OFF: No output + * @see POP3::DEBUG_SERVER: Server messages, connection/server errors + * @see POP3::DEBUG_CLIENT: Client and Server messages, connection/server errors * * @var int */ - public $do_debug = 0; + public $do_debug = self::DEBUG_OFF; /** * POP3 mail server hostname. @@ -130,6 +135,28 @@ class POP3 */ const LE = "\r\n"; + /** + * Debug level for no output. + * + * @var int + */ + const DEBUG_OFF = 0; + + /** + * Debug level to show server -> client messages + * also shows clients connection errors or errors from server + * + * @var int + */ + const DEBUG_SERVER = 1; + + /** + * Debug level to show client -> server and server -> client messages. + * + * @var int + */ + const DEBUG_CLIENT = 2; + /** * Simple static wrapper for all-in-one POP before SMTP. * @@ -329,7 +356,7 @@ class POP3 protected function getResponse($size = 128) { $response = fgets($this->pop_conn, $size); - if ($this->do_debug >= 1) { + if ($this->do_debug >= self::DEBUG_SERVER) { echo 'Server -> Client: ', $response; } @@ -346,7 +373,7 @@ class POP3 protected function sendString($string) { if ($this->pop_conn) { - if ($this->do_debug >= 2) { //Show client messages when debug >= 2 + if ($this->do_debug >= self::DEBUG_CLIENT) { //Show client messages when debug >= 2 echo 'Client -> Server: ', $string; } @@ -384,7 +411,7 @@ class POP3 protected function setError($error) { $this->errors[] = $error; - if ($this->do_debug >= 1) { + if ($this->do_debug >= self::DEBUG_SERVER) { echo '
    ';
                 foreach ($this->errors as $e) {
                     print_r($e);
    diff --git a/kirby/vendor/phpmailer/phpmailer/src/SMTP.php b/kirby/vendor/phpmailer/phpmailer/src/SMTP.php
    index aa55551..ab7f46e 100755
    --- a/kirby/vendor/phpmailer/phpmailer/src/SMTP.php
    +++ b/kirby/vendor/phpmailer/phpmailer/src/SMTP.php
    @@ -1,4 +1,5 @@
     
      * @author    Andy Prevost (codeworxtech) 
      * @author    Brent R. Matzelle (original founder)
    - * @copyright 2012 - 2019 Marcus Bointon
    + * @copyright 2012 - 2020 Marcus Bointon
      * @copyright 2010 - 2012 Jim Jagielski
      * @copyright 2004 - 2009 Andy Prevost
      * @license   http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
    @@ -34,7 +35,7 @@ class SMTP
          *
          * @var string
          */
    -    const VERSION = '6.1.6';
    +    const VERSION = '6.2.0';
     
         /**
          * SMTP line break constant.
    @@ -311,12 +312,6 @@ class SMTP
          */
         public function connect($host, $port = null, $timeout = 30, $options = [])
         {
    -        static $streamok;
    -        //This is enabled by default since 5.0.0 but some providers disable it
    -        //Check this once and cache the result
    -        if (null === $streamok) {
    -            $streamok = function_exists('stream_socket_client');
    -        }
             // Clear errors to avoid confusion
             $this->setError('');
             // Make sure we are __not__ connected
    @@ -335,12 +330,48 @@ class SMTP
                 (count($options) > 0 ? var_export($options, true) : 'array()'),
                 self::DEBUG_CONNECTION
             );
    +
    +        $this->smtp_conn = $this->getSMTPConnection($host, $port, $timeout, $options);
    +
    +        if ($this->smtp_conn === false) {
    +            //Error info already set inside `getSMTPConnection()`
    +            return false;
    +        }
    +
    +        $this->edebug('Connection: opened', self::DEBUG_CONNECTION);
    +
    +        // Get any announcement
    +        $this->last_reply = $this->get_lines();
    +        $this->edebug('SERVER -> CLIENT: ' . $this->last_reply, self::DEBUG_SERVER);
    +
    +        return true;
    +    }
    +
    +    /**
    +     * Create connection to the SMTP server.
    +     *
    +     * @param string $host    SMTP server IP or host name
    +     * @param int    $port    The port number to connect to
    +     * @param int    $timeout How long to wait for the connection to open
    +     * @param array  $options An array of options for stream_context_create()
    +     *
    +     * @return false|resource
    +     */
    +    protected function getSMTPConnection($host, $port = null, $timeout = 30, $options = [])
    +    {
    +        static $streamok;
    +        //This is enabled by default since 5.0.0 but some providers disable it
    +        //Check this once and cache the result
    +        if (null === $streamok) {
    +            $streamok = function_exists('stream_socket_client');
    +        }
    +
             $errno = 0;
             $errstr = '';
             if ($streamok) {
                 $socket_context = stream_context_create($options);
                 set_error_handler([$this, 'errorHandler']);
    -            $this->smtp_conn = stream_socket_client(
    +            $connection = stream_socket_client(
                     $host . ':' . $port,
                     $errno,
                     $errstr,
    @@ -356,7 +387,7 @@ class SMTP
                     self::DEBUG_CONNECTION
                 );
                 set_error_handler([$this, 'errorHandler']);
    -            $this->smtp_conn = fsockopen(
    +            $connection = fsockopen(
                     $host,
                     $port,
                     $errno,
    @@ -365,8 +396,9 @@ class SMTP
                 );
                 restore_error_handler();
             }
    +
             // Verify we connected properly
    -        if (!is_resource($this->smtp_conn)) {
    +        if (!is_resource($connection)) {
                 $this->setError(
                     'Failed to connect to server',
                     '',
    @@ -381,22 +413,19 @@ class SMTP
     
                 return false;
             }
    -        $this->edebug('Connection: opened', self::DEBUG_CONNECTION);
    +
             // SMTP server can take longer to respond, give longer timeout for first read
             // Windows does not have support for this timeout function
             if (strpos(PHP_OS, 'WIN') !== 0) {
    -            $max = (int) ini_get('max_execution_time');
    -            // Don't bother if unlimited
    -            if (0 !== $max && $timeout > $max) {
    +            $max = (int)ini_get('max_execution_time');
    +            // Don't bother if unlimited, or if set_time_limit is disabled
    +            if (0 !== $max && $timeout > $max && strpos(ini_get('disable_functions'), 'set_time_limit') === false) {
                     @set_time_limit($timeout);
                 }
    -            stream_set_timeout($this->smtp_conn, $timeout, 0);
    +            stream_set_timeout($connection, $timeout, 0);
             }
    -        // Get any announcement
    -        $announce = $this->get_lines();
    -        $this->edebug('SERVER -> CLIENT: ' . $announce, self::DEBUG_SERVER);
     
    -        return true;
    +        return $connection;
         }
     
         /**
    @@ -511,11 +540,12 @@ class SMTP
                         return false;
                     }
                     // Send encoded username and password
    -                if (!$this->sendCommand(
    -                    'User & Password',
    -                    base64_encode("\0" . $username . "\0" . $password),
    -                    235
    -                )
    +                if (
    +                    !$this->sendCommand(
    +                        'User & Password',
    +                        base64_encode("\0" . $username . "\0" . $password),
    +                        235
    +                    )
                     ) {
                         return false;
                     }
    @@ -1058,8 +1088,10 @@ class SMTP
         {
             //If SMTP transcripts are left enabled, or debug output is posted online
             //it can leak credentials, so hide credentials in all but lowest level
    -        if (self::DEBUG_LOWLEVEL > $this->do_debug &&
    -            in_array($command, ['User & Password', 'Username', 'Password'], true)) {
    +        if (
    +            self::DEBUG_LOWLEVEL > $this->do_debug &&
    +            in_array($command, ['User & Password', 'Username', 'Password'], true)
    +        ) {
                 $this->edebug('CLIENT -> SERVER: [credentials hidden]', self::DEBUG_CLIENT);
             } else {
                 $this->edebug('CLIENT -> SERVER: ' . $data, self::DEBUG_CLIENT);
    @@ -1166,13 +1198,41 @@ class SMTP
             $selW = null;
             while (is_resource($this->smtp_conn) && !feof($this->smtp_conn)) {
                 //Must pass vars in here as params are by reference
    -            if (!stream_select($selR, $selW, $selW, $this->Timelimit)) {
    +            //solution for signals inspired by https://github.com/symfony/symfony/pull/6540
    +            set_error_handler([$this, 'errorHandler']);
    +            $n = stream_select($selR, $selW, $selW, $this->Timelimit);
    +            restore_error_handler();
    +
    +            if ($n === false) {
    +                $message = $this->getError()['detail'];
    +
    +                $this->edebug(
    +                    'SMTP -> get_lines(): select failed (' . $message . ')',
    +                    self::DEBUG_LOWLEVEL
    +                );
    +
    +                //stream_select returns false when the `select` system call is interrupted
    +                //by an incoming signal, try the select again
    +                if (stripos($message, 'interrupted system call') !== false) {
    +                    $this->edebug(
    +                        'SMTP -> get_lines(): retrying stream_select',
    +                        self::DEBUG_LOWLEVEL
    +                    );
    +                    $this->setError('');
    +                    continue;
    +                }
    +
    +                break;
    +            }
    +
    +            if (!$n) {
                     $this->edebug(
                         'SMTP -> get_lines(): select timed-out in (' . $this->Timelimit . ' sec)',
                         self::DEBUG_LOWLEVEL
                     );
                     break;
                 }
    +
                 //Deliberate noise suppression - errors are handled afterwards
                 $str = @fgets($this->smtp_conn, self::MAX_REPLY_LENGTH);
                 $this->edebug('SMTP INBOUND: "' . trim($str) . '"', self::DEBUG_LOWLEVEL);
    diff --git a/kirby/vendor/symfony/polyfill-mbstring/Mbstring.php b/kirby/vendor/symfony/polyfill-mbstring/Mbstring.php
    index 15503bc..7bb3023 100755
    --- a/kirby/vendor/symfony/polyfill-mbstring/Mbstring.php
    +++ b/kirby/vendor/symfony/polyfill-mbstring/Mbstring.php
    @@ -115,10 +115,8 @@ final class Mbstring
             return iconv($fromEncoding, $toEncoding.'//IGNORE', $s);
         }
     
    -    public static function mb_convert_variables($toEncoding, $fromEncoding, &$a = null, &$b = null, &$c = null, &$d = null, &$e = null, &$f = null)
    +    public static function mb_convert_variables($toEncoding, $fromEncoding, &...$vars)
         {
    -        $vars = array(&$a, &$b, &$c, &$d, &$e, &$f);
    -
             $ok = true;
             array_walk_recursive($vars, function (&$v) use (&$ok, $toEncoding, $fromEncoding) {
                 if (false === $v = Mbstring::mb_convert_encoding($v, $toEncoding, $fromEncoding)) {
    @@ -629,10 +627,11 @@ final class Mbstring
         {
             $encoding = self::getEncoding($encoding);
             if ('CP850' === $encoding || 'ASCII' === $encoding) {
    -            return strrchr($haystack, $needle, $part);
    +            $pos = strrpos($haystack, $needle);
    +        } else {
    +            $needle = self::mb_substr($needle, 0, 1, $encoding);
    +            $pos = iconv_strrpos($haystack, $needle, $encoding);
             }
    -        $needle = self::mb_substr($needle, 0, 1, $encoding);
    -        $pos = iconv_strrpos($haystack, $needle, $encoding);
     
             return self::getSubpart($pos, $part, $haystack, $encoding);
         }
    diff --git a/kirby/vendor/symfony/polyfill-mbstring/bootstrap.php b/kirby/vendor/symfony/polyfill-mbstring/bootstrap.php
    index b36a092..d0a93d4 100755
    --- a/kirby/vendor/symfony/polyfill-mbstring/bootstrap.php
    +++ b/kirby/vendor/symfony/polyfill-mbstring/bootstrap.php
    @@ -12,28 +12,28 @@
     use Symfony\Polyfill\Mbstring as p;
     
     if (!function_exists('mb_convert_encoding')) {
    -    function mb_convert_encoding($s, $to, $from = null) { return p\Mbstring::mb_convert_encoding($s, $to, $from); }
    +    function mb_convert_encoding($string, $to_encoding, $from_encoding = null) { return p\Mbstring::mb_convert_encoding($string, $to_encoding, $from_encoding); }
     }
     if (!function_exists('mb_decode_mimeheader')) {
    -    function mb_decode_mimeheader($s) { return p\Mbstring::mb_decode_mimeheader($s); }
    +    function mb_decode_mimeheader($string) { return p\Mbstring::mb_decode_mimeheader($string); }
     }
     if (!function_exists('mb_encode_mimeheader')) {
    -    function mb_encode_mimeheader($s, $charset = null, $transferEnc = null, $lf = null, $indent = null) { return p\Mbstring::mb_encode_mimeheader($s, $charset, $transferEnc, $lf, $indent); }
    +    function mb_encode_mimeheader($string, $charset = null, $transfer_encoding = null, $newline = null, $indent = null) { return p\Mbstring::mb_encode_mimeheader($string, $charset, $transfer_encoding, $newline, $indent); }
     }
     if (!function_exists('mb_decode_numericentity')) {
    -    function mb_decode_numericentity($s, $convmap, $enc = null) { return p\Mbstring::mb_decode_numericentity($s, $convmap, $enc); }
    +    function mb_decode_numericentity($string, $map, $encoding = null) { return p\Mbstring::mb_decode_numericentity($string, $map, $encoding); }
     }
     if (!function_exists('mb_encode_numericentity')) {
    -    function mb_encode_numericentity($s, $convmap, $enc = null, $is_hex = false) { return p\Mbstring::mb_encode_numericentity($s, $convmap, $enc, $is_hex); }
    +    function mb_encode_numericentity($string, $map, $encoding = null, $hex = false) { return p\Mbstring::mb_encode_numericentity($string, $map, $encoding, $hex); }
     }
     if (!function_exists('mb_convert_case')) {
    -    function mb_convert_case($s, $mode, $enc = null) { return p\Mbstring::mb_convert_case($s, $mode, $enc); }
    +    function mb_convert_case($string, $mode, $encoding = null) { return p\Mbstring::mb_convert_case($string, $mode, $encoding); }
     }
     if (!function_exists('mb_internal_encoding')) {
    -    function mb_internal_encoding($enc = null) { return p\Mbstring::mb_internal_encoding($enc); }
    +    function mb_internal_encoding($encoding = null) { return p\Mbstring::mb_internal_encoding($encoding); }
     }
     if (!function_exists('mb_language')) {
    -    function mb_language($lang = null) { return p\Mbstring::mb_language($lang); }
    +    function mb_language($language = null) { return p\Mbstring::mb_language($language); }
     }
     if (!function_exists('mb_list_encodings')) {
         function mb_list_encodings() { return p\Mbstring::mb_list_encodings(); }
    @@ -42,88 +42,94 @@ if (!function_exists('mb_encoding_aliases')) {
         function mb_encoding_aliases($encoding) { return p\Mbstring::mb_encoding_aliases($encoding); }
     }
     if (!function_exists('mb_check_encoding')) {
    -    function mb_check_encoding($var = null, $encoding = null) { return p\Mbstring::mb_check_encoding($var, $encoding); }
    +    function mb_check_encoding($value = null, $encoding = null) { return p\Mbstring::mb_check_encoding($value, $encoding); }
     }
     if (!function_exists('mb_detect_encoding')) {
    -    function mb_detect_encoding($str, $encodingList = null, $strict = false) { return p\Mbstring::mb_detect_encoding($str, $encodingList, $strict); }
    +    function mb_detect_encoding($string, $encodings = null, $strict = false) { return p\Mbstring::mb_detect_encoding($string, $encodings, $strict); }
     }
     if (!function_exists('mb_detect_order')) {
    -    function mb_detect_order($encodingList = null) { return p\Mbstring::mb_detect_order($encodingList); }
    +    function mb_detect_order($encoding = null) { return p\Mbstring::mb_detect_order($encoding); }
     }
     if (!function_exists('mb_parse_str')) {
    -    function mb_parse_str($s, &$result = array()) { parse_str($s, $result); }
    +    function mb_parse_str($string, &$result = array()) { parse_str($string, $result); }
     }
     if (!function_exists('mb_strlen')) {
    -    function mb_strlen($s, $enc = null) { return p\Mbstring::mb_strlen($s, $enc); }
    +    function mb_strlen($string, $encoding = null) { return p\Mbstring::mb_strlen($string, $encoding); }
     }
     if (!function_exists('mb_strpos')) {
    -    function mb_strpos($s, $needle, $offset = 0, $enc = null) { return p\Mbstring::mb_strpos($s, $needle, $offset, $enc); }
    +    function mb_strpos($haystack, $needle, $offset = 0, $encoding = null) { return p\Mbstring::mb_strpos($haystack, $needle, $offset, $encoding); }
     }
     if (!function_exists('mb_strtolower')) {
    -    function mb_strtolower($s, $enc = null) { return p\Mbstring::mb_strtolower($s, $enc); }
    +    function mb_strtolower($string, $encoding = null) { return p\Mbstring::mb_strtolower($string, $encoding); }
     }
     if (!function_exists('mb_strtoupper')) {
    -    function mb_strtoupper($s, $enc = null) { return p\Mbstring::mb_strtoupper($s, $enc); }
    +    function mb_strtoupper($string, $encoding = null) { return p\Mbstring::mb_strtoupper($string, $encoding); }
     }
     if (!function_exists('mb_substitute_character')) {
    -    function mb_substitute_character($char = null) { return p\Mbstring::mb_substitute_character($char); }
    +    function mb_substitute_character($substitute_character = null) { return p\Mbstring::mb_substitute_character($substitute_character); }
     }
     if (!function_exists('mb_substr')) {
    -    function mb_substr($s, $start, $length = 2147483647, $enc = null) { return p\Mbstring::mb_substr($s, $start, $length, $enc); }
    +    function mb_substr($string, $start, $length = 2147483647, $encoding = null) { return p\Mbstring::mb_substr($string, $start, $length, $encoding); }
     }
     if (!function_exists('mb_stripos')) {
    -    function mb_stripos($s, $needle, $offset = 0, $enc = null) { return p\Mbstring::mb_stripos($s, $needle, $offset, $enc); }
    +    function mb_stripos($haystack, $needle, $offset = 0, $encoding = null) { return p\Mbstring::mb_stripos($haystack, $needle, $offset, $encoding); }
     }
     if (!function_exists('mb_stristr')) {
    -    function mb_stristr($s, $needle, $part = false, $enc = null) { return p\Mbstring::mb_stristr($s, $needle, $part, $enc); }
    +    function mb_stristr($haystack, $needle, $before_needle = false, $encoding = null) { return p\Mbstring::mb_stristr($haystack, $needle, $before_needle, $encoding); }
     }
     if (!function_exists('mb_strrchr')) {
    -    function mb_strrchr($s, $needle, $part = false, $enc = null) { return p\Mbstring::mb_strrchr($s, $needle, $part, $enc); }
    +    function mb_strrchr($haystack, $needle, $before_needle = false, $encoding = null) { return p\Mbstring::mb_strrchr($haystack, $needle, $before_needle, $encoding); }
     }
     if (!function_exists('mb_strrichr')) {
    -    function mb_strrichr($s, $needle, $part = false, $enc = null) { return p\Mbstring::mb_strrichr($s, $needle, $part, $enc); }
    +    function mb_strrichr($haystack, $needle, $before_needle = false, $encoding = null) { return p\Mbstring::mb_strrichr($haystack, $needle, $before_needle, $encoding); }
     }
     if (!function_exists('mb_strripos')) {
    -    function mb_strripos($s, $needle, $offset = 0, $enc = null) { return p\Mbstring::mb_strripos($s, $needle, $offset, $enc); }
    +    function mb_strripos($haystack, $needle, $offset = 0, $encoding = null) { return p\Mbstring::mb_strripos($haystack, $needle, $offset, $encoding); }
     }
     if (!function_exists('mb_strrpos')) {
    -    function mb_strrpos($s, $needle, $offset = 0, $enc = null) { return p\Mbstring::mb_strrpos($s, $needle, $offset, $enc); }
    +    function mb_strrpos($haystack, $needle, $offset = 0, $encoding = null) { return p\Mbstring::mb_strrpos($haystack, $needle, $offset, $encoding); }
     }
     if (!function_exists('mb_strstr')) {
    -    function mb_strstr($s, $needle, $part = false, $enc = null) { return p\Mbstring::mb_strstr($s, $needle, $part, $enc); }
    +    function mb_strstr($haystack, $needle, $before_needle = false, $encoding = null) { return p\Mbstring::mb_strstr($haystack, $needle, $before_needle, $encoding); }
     }
     if (!function_exists('mb_get_info')) {
         function mb_get_info($type = 'all') { return p\Mbstring::mb_get_info($type); }
     }
     if (!function_exists('mb_http_output')) {
    -    function mb_http_output($enc = null) { return p\Mbstring::mb_http_output($enc); }
    +    function mb_http_output($encoding = null) { return p\Mbstring::mb_http_output($encoding); }
     }
     if (!function_exists('mb_strwidth')) {
    -    function mb_strwidth($s, $enc = null) { return p\Mbstring::mb_strwidth($s, $enc); }
    +    function mb_strwidth($string, $encoding = null) { return p\Mbstring::mb_strwidth($string, $encoding); }
     }
     if (!function_exists('mb_substr_count')) {
    -    function mb_substr_count($haystack, $needle, $enc = null) { return p\Mbstring::mb_substr_count($haystack, $needle, $enc); }
    +    function mb_substr_count($haystack, $needle, $encoding = null) { return p\Mbstring::mb_substr_count($haystack, $needle, $encoding); }
     }
     if (!function_exists('mb_output_handler')) {
    -    function mb_output_handler($contents, $status) { return p\Mbstring::mb_output_handler($contents, $status); }
    +    function mb_output_handler($string, $status) { return p\Mbstring::mb_output_handler($string, $status); }
     }
     if (!function_exists('mb_http_input')) {
         function mb_http_input($type = '') { return p\Mbstring::mb_http_input($type); }
     }
    +
     if (!function_exists('mb_convert_variables')) {
    -    function mb_convert_variables($toEncoding, $fromEncoding, &$a = null, &$b = null, &$c = null, &$d = null, &$e = null, &$f = null) { return p\Mbstring::mb_convert_variables($toEncoding, $fromEncoding, $a, $b, $c, $d, $e, $f); }
    +    if (PHP_VERSION_ID >= 80000) {
    +        function mb_convert_variables($to_encoding, $from_encoding, &$var, &...$vars) { return p\Mbstring::mb_convert_variables($to_encoding, $from_encoding, $var, ...$vars); }
    +    } else {
    +        function mb_convert_variables($to_encoding, $from_encoding, &...$vars) { return p\Mbstring::mb_convert_variables($to_encoding, $from_encoding, ...$vars); }
    +    }
     }
    +
     if (!function_exists('mb_ord')) {
    -    function mb_ord($s, $enc = null) { return p\Mbstring::mb_ord($s, $enc); }
    +    function mb_ord($string, $encoding = null) { return p\Mbstring::mb_ord($string, $encoding); }
     }
     if (!function_exists('mb_chr')) {
    -    function mb_chr($code, $enc = null) { return p\Mbstring::mb_chr($code, $enc); }
    +    function mb_chr($codepoint, $encoding = null) { return p\Mbstring::mb_chr($codepoint, $encoding); }
     }
     if (!function_exists('mb_scrub')) {
    -    function mb_scrub($s, $enc = null) { $enc = null === $enc ? mb_internal_encoding() : $enc; return mb_convert_encoding($s, $enc, $enc); }
    +    function mb_scrub($string, $encoding = null) { $encoding = null === $encoding ? mb_internal_encoding() : $encoding; return mb_convert_encoding($string, $encoding, $encoding); }
     }
     if (!function_exists('mb_str_split')) {
    -    function mb_str_split($string, $split_length = 1, $encoding = null) { return p\Mbstring::mb_str_split($string, $split_length, $encoding); }
    +    function mb_str_split($string, $length = 1, $encoding = null) { return p\Mbstring::mb_str_split($string, $length, $encoding); }
     }
     
     if (extension_loaded('mbstring')) {
    diff --git a/kirby/views/php.php b/kirby/views/php.php
    index 35a4757..1822568 100755
    --- a/kirby/views/php.php
    +++ b/kirby/views/php.php
    @@ -5,7 +5,7 @@
       

    Advice for developers and administrators:
    - Change the PHP version to 7.2, 7.3 or 7.4 (PHP 7.3 or 7.4 are recommended) + Change the PHP version to 7.3, 7.4 or 8.0 (PHP 7.4 is recommended)