diff --git a/kirby/cacert.pem b/kirby/cacert.pem index 3c79c59..cb5a702 100755 --- a/kirby/cacert.pem +++ b/kirby/cacert.pem @@ -1,7 +1,7 @@ ## ## Bundle of CA Root Certificates ## -## Certificate data from Mozilla as of: Tue Jan 19 04:12:04 2021 GMT +## Certificate data from Mozilla as of: Tue Apr 13 03:12:04 2021 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: 3bdc63d1de27058fec943a999a2a8a01fcc6806a611b19221a7727d3d9bbbdfd +## SHA256: f377673fa3c22ba2188a4cea041c7b8c99a4817ffde6821e98325ce89324e5aa ## @@ -718,51 +718,6 @@ vBTjD4au8as+x6AJzKNI0eDbZOeStc+vckNwi/nDhDwTqn6Sm1dTk/pwwpEOMfmbZ13pljheX7Nz TogVZ96edhBiIL5VaZVDADlN9u6wWk5JRFRYX0KD -----END CERTIFICATE----- -GeoTrust Primary Certification Authority - G2 -============================================= ------BEGIN CERTIFICATE----- -MIICrjCCAjWgAwIBAgIQPLL0SAoA4v7rJDteYD7DazAKBggqhkjOPQQDAzCBmDELMAkGA1UEBhMC -VVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChjKSAyMDA3IEdlb1RydXN0IElu -Yy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFyeSBD -ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMB4XDTA3MTEwNTAwMDAwMFoXDTM4MDExODIzNTk1 -OVowgZgxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAoYykg -MjAwNyBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNVBAMTLUdl -b1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjB2MBAGByqGSM49AgEG -BSuBBAAiA2IABBWx6P0DFUPlrOuHNxFi79KDNlJ9RVcLSo17VDs6bl8VAsBQps8lL33KSLjHUGMc -KiEIfJo22Av+0SbFWDEwKCXzXV2juLaltJLtbCyf691DiaI8S0iRHVDsJt/WYC69IaNCMEAwDwYD -VR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBVfNVdRVfslsq0DafwBo/q+ -EVXVMAoGCCqGSM49BAMDA2cAMGQCMGSWWaboCd6LuvpaiIjwH5HTRqjySkwCY/tsXzjbLkGTqQ7m -ndwxHLKgpxgceeHHNgIwOlavmnRs9vuD4DPTCF+hnMJbn0bWtsuRBmOiBuczrD6ogRLQy7rQkgu2 -npaqBA+K ------END CERTIFICATE----- - -VeriSign Universal Root Certification Authority -=============================================== ------BEGIN CERTIFICATE----- -MIIEuTCCA6GgAwIBAgIQQBrEZCGzEyEDDrvkEhrFHTANBgkqhkiG9w0BAQsFADCBvTELMAkGA1UE -BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO -ZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwOCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVk -IHVzZSBvbmx5MTgwNgYDVQQDEy9WZXJpU2lnbiBVbml2ZXJzYWwgUm9vdCBDZXJ0aWZpY2F0aW9u -IEF1dGhvcml0eTAeFw0wODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIG9MQswCQYDVQQGEwJV -UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv -cmsxOjA4BgNVBAsTMShjKSAyMDA4IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl -IG9ubHkxODA2BgNVBAMTL1ZlcmlTaWduIFVuaXZlcnNhbCBSb290IENlcnRpZmljYXRpb24gQXV0 -aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx2E3XrEBNNti1xWb/1hajCMj -1mCOkdeQmIN65lgZOIzF9uVkhbSicfvtvbnazU0AtMgtc6XHaXGVHzk8skQHnOgO+k1KxCHfKWGP -MiJhgsWHH26MfF8WIFFE0XBPV+rjHOPMee5Y2A7Cs0WTwCznmhcrewA3ekEzeOEz4vMQGn+HLL72 -9fdC4uW/h2KJXwBL38Xd5HVEMkE6HnFuacsLdUYI0crSK5XQz/u5QGtkjFdN/BMReYTtXlT2NJ8I -AfMQJQYXStrxHXpma5hgZqTZ79IugvHw7wnqRMkVauIDbjPTrJ9VAMf2CGqUuV/c4DPxhGD5WycR -tPwW8rtWaoAljQIDAQABo4GyMIGvMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMG0G -CCsGAQUFBwEMBGEwX6FdoFswWTBXMFUWCWltYWdlL2dpZjAhMB8wBwYFKw4DAhoEFI/l0xqGrI2O -a8PPgGrUSBgsexkuMCUWI2h0dHA6Ly9sb2dvLnZlcmlzaWduLmNvbS92c2xvZ28uZ2lmMB0GA1Ud -DgQWBBS2d/ppSEefUxLVwuoHMnYH0ZcHGTANBgkqhkiG9w0BAQsFAAOCAQEASvj4sAPmLGd75JR3 -Y8xuTPl9Dg3cyLk1uXBPY/ok+myDjEedO2Pzmvl2MpWRsXe8rJq+seQxIcaBlVZaDrHC1LGmWazx -Y8u4TB1ZkErvkBYoH1quEPuBUDgMbMzxPcP1Y+Oz4yHJJDnp/RVmRvQbEdBNc6N9Rvk97ahfYtTx -P/jgdFcrGJ2BtMQo2pSXpXDrrB2+BxHw1dvd5Yzw1TKwg+ZX4o+/vqGqvz0dtdQ46tewXDpPaj+P -wGZsY6rp2aQW9IHRlRQOfc2VNNnSj3BzgXucfr2YYdhFh5iQxeuGMMY1v/D/w1WIg0vvBZIGcfK4 -mJO37M2CYfE45k+XmCpajQ== ------END CERTIFICATE----- - NetLock Arany (Class Gold) Főtanúsítvány ======================================== -----BEGIN CERTIFICATE----- @@ -1980,36 +1935,6 @@ uglB4Zf4+/2a4n0Sye18ZNPLBSWLVtmg515dTguDnFt2KaAJJiFqYgIwcdK1j1zqO+F4CYWodZI7 yFz9SO8NdCKoCOJuxUnOxwy8p2Fp8fc74SrL+SvzZpA3 -----END CERTIFICATE----- -Staat der Nederlanden Root CA - G3 -================================== ------BEGIN CERTIFICATE----- -MIIFdDCCA1ygAwIBAgIEAJiiOTANBgkqhkiG9w0BAQsFADBaMQswCQYDVQQGEwJOTDEeMBwGA1UE -CgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSswKQYDVQQDDCJTdGFhdCBkZXIgTmVkZXJsYW5kZW4g -Um9vdCBDQSAtIEczMB4XDTEzMTExNDExMjg0MloXDTI4MTExMzIzMDAwMFowWjELMAkGA1UEBhMC -TkwxHjAcBgNVBAoMFVN0YWF0IGRlciBOZWRlcmxhbmRlbjErMCkGA1UEAwwiU3RhYXQgZGVyIE5l -ZGVybGFuZGVuIFJvb3QgQ0EgLSBHMzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAL4y -olQPcPssXFnrbMSkUeiFKrPMSjTysF/zDsccPVMeiAho2G89rcKezIJnByeHaHE6n3WWIkYFsO2t -x1ueKt6c/DrGlaf1F2cY5y9JCAxcz+bMNO14+1Cx3Gsy8KL+tjzk7FqXxz8ecAgwoNzFs21v0IJy -EavSgWhZghe3eJJg+szeP4TrjTgzkApyI/o1zCZxMdFyKJLZWyNtZrVtB0LrpjPOktvA9mxjeM3K -Tj215VKb8b475lRgsGYeCasH/lSJEULR9yS6YHgamPfJEf0WwTUaVHXvQ9Plrk7O53vDxk5hUUur -mkVLoR9BvUhTFXFkC4az5S6+zqQbwSmEorXLCCN2QyIkHxcE1G6cxvx/K2Ya7Irl1s9N9WMJtxU5 -1nus6+N86U78dULI7ViVDAZCopz35HCz33JvWjdAidiFpNfxC95DGdRKWCyMijmev4SH8RY7Ngzp -07TKbBlBUgmhHbBqv4LvcFEhMtwFdozL92TkA1CvjJFnq8Xy7ljY3r735zHPbMk7ccHViLVlvMDo -FxcHErVc0qsgk7TmgoNwNsXNo42ti+yjwUOH5kPiNL6VizXtBznaqB16nzaeErAMZRKQFWDZJkBE -41ZgpRDUajz9QdwOWke275dhdU/Z/seyHdTtXUmzqWrLZoQT1Vyg3N9udwbRcXXIV2+vD3dbAgMB -AAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRUrfrHkleu -yjWcLhL75LpdINyUVzANBgkqhkiG9w0BAQsFAAOCAgEAMJmdBTLIXg47mAE6iqTnB/d6+Oea31BD -U5cqPco8R5gu4RV78ZLzYdqQJRZlwJ9UXQ4DO1t3ApyEtg2YXzTdO2PCwyiBwpwpLiniyMMB8jPq -KqrMCQj3ZWfGzd/TtiunvczRDnBfuCPRy5FOCvTIeuXZYzbB1N/8Ipf3YF3qKS9Ysr1YvY2WTxB1 -v0h7PVGHoTx0IsL8B3+A3MSs/mrBcDCw6Y5p4ixpgZQJut3+TcCDjJRYwEYgr5wfAvg1VUkvRtTA -8KCWAg8zxXHzniN9lLf9OtMJgwYh/WA9rjLA0u6NpvDntIJ8CsxwyXmA+P5M9zWEGYox+wrZ13+b -8KKaa8MFSu1BYBQw0aoRQm7TIwIEC8Zl3d1Sd9qBa7Ko+gE4uZbqKmxnl4mUnrzhVNXkanjvSr0r -mj1AfsbAddJu+2gw7OyLnflJNZoaLNmzlTnVHpL3prllL+U9bTpITAjc5CgSKL59NVzq4BZ+Extq -1z7XnvwtdbLBFNUjA9tbbws+eC8N3jONFrdI54OagQ97wUNNVQQXOEpR1VmiiXTTn74eS9fGbbeI -JG9gkaSChVtWQbzQRKtqE77RLFi3EjNYsjdj3BP1lB0/QFH1T/U67cjF68IeHRaVesd+QnGTbksV -tzDfqu1XhUisHWrdOWnk4Xl4vs4Fv6EM94B7IWcnMFk= ------END CERTIFICATE----- - Staat der Nederlanden EV Root CA ================================ -----BEGIN CERTIFICATE----- @@ -3226,3 +3151,64 @@ qqFJu3FS8r/2/yehNq+4tneI3TqkbZs0kNwUXTC/t+sX5Ie3cdCh13cV1ELX8vMxmV2b3RZtP+oG I/hGoiLtk/bdmuYqh7GYVPEi92tF4+KOdh2ajcQGjTa3FPOdVGm3jjzVpG2Tgbet9r1ke8LJaDmg kpzNNIaRkPpkUZ3+/uul9XXeifdy -----END CERTIFICATE----- + +AC RAIZ FNMT-RCM SERVIDORES SEGUROS +=================================== +-----BEGIN CERTIFICATE----- +MIICbjCCAfOgAwIBAgIQYvYybOXE42hcG2LdnC6dlTAKBggqhkjOPQQDAzB4MQswCQYDVQQGEwJF +UzERMA8GA1UECgwIRk5NVC1SQ00xDjAMBgNVBAsMBUNlcmVzMRgwFgYDVQRhDA9WQVRFUy1RMjgy +NjAwNEoxLDAqBgNVBAMMI0FDIFJBSVogRk5NVC1SQ00gU0VSVklET1JFUyBTRUdVUk9TMB4XDTE4 +MTIyMDA5MzczM1oXDTQzMTIyMDA5MzczM1oweDELMAkGA1UEBhMCRVMxETAPBgNVBAoMCEZOTVQt +UkNNMQ4wDAYDVQQLDAVDZXJlczEYMBYGA1UEYQwPVkFURVMtUTI4MjYwMDRKMSwwKgYDVQQDDCNB +QyBSQUlaIEZOTVQtUkNNIFNFUlZJRE9SRVMgU0VHVVJPUzB2MBAGByqGSM49AgEGBSuBBAAiA2IA +BPa6V1PIyqvfNkpSIeSX0oNnnvBlUdBeh8dHsVnyV0ebAAKTRBdp20LHsbI6GA60XYyzZl2hNPk2 +LEnb80b8s0RpRBNm/dfF/a82Tc4DTQdxz69qBdKiQ1oKUm8BA06Oi6NCMEAwDwYDVR0TAQH/BAUw +AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFAG5L++/EYZg8k/QQW6rcx/n0m5JMAoGCCqG +SM49BAMDA2kAMGYCMQCuSuMrQMN0EfKVrRYj3k4MGuZdpSRea0R7/DjiT8ucRRcRTBQnJlU5dUoD +zBOQn5ICMQD6SmxgiHPz7riYYqnOK8LZiqZwMR2vsJRM60/G49HzYqc8/5MuB1xJAWdpEgJyv+c= +-----END CERTIFICATE----- + +GlobalSign Root R46 +=================== +-----BEGIN CERTIFICATE----- +MIIFWjCCA0KgAwIBAgISEdK7udcjGJ5AXwqdLdDfJWfRMA0GCSqGSIb3DQEBDAUAMEYxCzAJBgNV +BAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRwwGgYDVQQDExNHbG9iYWxTaWduIFJv +b3QgUjQ2MB4XDTE5MDMyMDAwMDAwMFoXDTQ2MDMyMDAwMDAwMFowRjELMAkGA1UEBhMCQkUxGTAX +BgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExHDAaBgNVBAMTE0dsb2JhbFNpZ24gUm9vdCBSNDYwggIi +MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCsrHQy6LNl5brtQyYdpokNRbopiLKkHWPd08Es +CVeJOaFV6Wc0dwxu5FUdUiXSE2te4R2pt32JMl8Nnp8semNgQB+msLZ4j5lUlghYruQGvGIFAha/ +r6gjA7aUD7xubMLL1aa7DOn2wQL7Id5m3RerdELv8HQvJfTqa1VbkNud316HCkD7rRlr+/fKYIje +2sGP1q7Vf9Q8g+7XFkyDRTNrJ9CG0Bwta/OrffGFqfUo0q3v84RLHIf8E6M6cqJaESvWJ3En7YEt +bWaBkoe0G1h6zD8K+kZPTXhc+CtI4wSEy132tGqzZfxCnlEmIyDLPRT5ge1lFgBPGmSXZgjPjHvj +K8Cd+RTyG/FWaha/LIWFzXg4mutCagI0GIMXTpRW+LaCtfOW3T3zvn8gdz57GSNrLNRyc0NXfeD4 +12lPFzYE+cCQYDdF3uYM2HSNrpyibXRdQr4G9dlkbgIQrImwTDsHTUB+JMWKmIJ5jqSngiCNI/on +ccnfxkF0oE32kRbcRoxfKWMxWXEM2G/CtjJ9++ZdU6Z+Ffy7dXxd7Pj2Fxzsx2sZy/N78CsHpdls +eVR2bJ0cpm4O6XkMqCNqo98bMDGfsVR7/mrLZqrcZdCinkqaByFrgY/bxFn63iLABJzjqls2k+g9 +vXqhnQt2sQvHnf3PmKgGwvgqo6GDoLclcqUC4wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAYYwDwYD +VR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA1yrc4GHqMywptWU4jaWSf8FmSwwDQYJKoZIhvcNAQEM +BQADggIBAHx47PYCLLtbfpIrXTncvtgdokIzTfnvpCo7RGkerNlFo048p9gkUbJUHJNOxO97k4Vg +JuoJSOD1u8fpaNK7ajFxzHmuEajwmf3lH7wvqMxX63bEIaZHU1VNaL8FpO7XJqti2kM3S+LGteWy +gxk6x9PbTZ4IevPuzz5i+6zoYMzRx6Fcg0XERczzF2sUyQQCPtIkpnnpHs6i58FZFZ8d4kuaPp92 +CC1r2LpXFNqD6v6MVenQTqnMdzGxRBF6XLE+0xRFFRhiJBPSy03OXIPBNvIQtQ6IbbjhVp+J3pZm +OUdkLG5NrmJ7v2B0GbhWrJKsFjLtrWhV/pi60zTe9Mlhww6G9kuEYO4Ne7UyWHmRVSyBQ7N0H3qq +JZ4d16GLuc1CLgSkZoNNiTW2bKg2SnkheCLQQrzRQDGQob4Ez8pn7fXwgNNgyYMqIgXQBztSvwye +qiv5u+YfjyW6hY0XHgL+XVAEV8/+LbzvXMAaq7afJMbfc2hIkCwU9D9SGuTSyxTDYWnP4vkYxboz +nxSjBF25cfe1lNj2M8FawTSLfJvdkzrnE6JwYZ+vj+vYxXX4M2bUdGc6N3ec592kD3ZDZopD8p/7 +DEJ4Y9HiD2971KE9dJeFt0g5QdYg/NA6s/rob8SKunE3vouXsXgxT7PntgMTzlSdriVZzH81Xwj3 +QEUxeCp6 +-----END CERTIFICATE----- + +GlobalSign Root E46 +=================== +-----BEGIN CERTIFICATE----- +MIICCzCCAZGgAwIBAgISEdK7ujNu1LzmJGjFDYQdmOhDMAoGCCqGSM49BAMDMEYxCzAJBgNVBAYT +AkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRwwGgYDVQQDExNHbG9iYWxTaWduIFJvb3Qg +RTQ2MB4XDTE5MDMyMDAwMDAwMFoXDTQ2MDMyMDAwMDAwMFowRjELMAkGA1UEBhMCQkUxGTAXBgNV +BAoTEEdsb2JhbFNpZ24gbnYtc2ExHDAaBgNVBAMTE0dsb2JhbFNpZ24gUm9vdCBFNDYwdjAQBgcq +hkjOPQIBBgUrgQQAIgNiAAScDrHPt+ieUnd1NPqlRqetMhkytAepJ8qUuwzSChDH2omwlwxwEwkB +jtjqR+q+soArzfwoDdusvKSGN+1wCAB16pMLey5SnCNoIwZD7JIvU4Tb+0cUB+hflGddyXqBPCCj +QjBAMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBQxCpCPtsad0kRL +gLWi5h+xEk8blTAKBggqhkjOPQQDAwNoADBlAjEA31SQ7Zvvi5QCkxeCmb6zniz2C5GMn0oUsfZk +vLtoURMMA/cVi4RguYv/Uo7njLwcAjA8+RHUjE7AwWHCFUyqqx0LMV87HOIAl0Qx5v5zli/altP+ +CAezNIm8BZ/3Hobui3A= +-----END CERTIFICATE----- diff --git a/kirby/composer.json b/kirby/composer.json index 7b427f7..be969b2 100755 --- a/kirby/composer.json +++ b/kirby/composer.json @@ -8,7 +8,7 @@ "core" ], "homepage": "https://getkirby.com", - "version": "3.5.4", + "version": "3.5.5", "license": "proprietary", "authors": [ { @@ -21,13 +21,13 @@ "php": ">=7.3.0 <8.1.0", "ext-ctype": "*", "ext-mbstring": "*", - "claviska/simpleimage": "3.5.1", - "filp/whoops": "2.9.1", + "claviska/simpleimage": "3.6.3", + "filp/whoops": "2.12.1", "getkirby/composer-installer": "^1.2.0", "laminas/laminas-escaper": "2.7.0", "michelf/php-smartypants": "1.8.1", "mustangostang/spyc": "0.6.3", - "phpmailer/phpmailer": "6.2.0", + "phpmailer/phpmailer": "6.4.1", "true/punycode": "2.1.1" }, "config": { diff --git a/kirby/composer.lock b/kirby/composer.lock index bd46947..4d6f7a3 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": "70ee865c7f7cf618466ffb0f90bca1d8", + "content-hash": "ba5945c6fe31aba44aa33539dcc34c83", "packages": [ { "name": "claviska/simpleimage", - "version": "3.5.1", + "version": "3.6.3", "source": { "type": "git", "url": "https://github.com/claviska/SimpleImage.git", - "reference": "ab2ab8a4672738ab77b39b00922ee4e79aeadb11" + "reference": "21b6f4bf4ef1927158b3e29bd0c2d99c6681c750" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/claviska/SimpleImage/zipball/ab2ab8a4672738ab77b39b00922ee4e79aeadb11", - "reference": "ab2ab8a4672738ab77b39b00922ee4e79aeadb11", + "url": "https://api.github.com/repos/claviska/SimpleImage/zipball/21b6f4bf4ef1927158b3e29bd0c2d99c6681c750", + "reference": "21b6f4bf4ef1927158b3e29bd0c2d99c6681c750", "shasum": "" }, "require": { @@ -45,7 +45,7 @@ "description": "A PHP class that makes working with images as simple as possible.", "support": { "issues": "https://github.com/claviska/SimpleImage/issues", - "source": "https://github.com/claviska/SimpleImage/tree/3.5.1" + "source": "https://github.com/claviska/SimpleImage/tree/3.6.3" }, "funding": [ { @@ -53,20 +53,20 @@ "type": "github" } ], - "time": "2020-10-30T20:47:26+00:00" + "time": "2021-04-20T12:18:18+00:00" }, { "name": "filp/whoops", - "version": "2.9.1", + "version": "2.12.1", "source": { "type": "git", "url": "https://github.com/filp/whoops.git", - "reference": "307fb34a5ab697461ec4c9db865b20ff2fd40771" + "reference": "c13c0be93cff50f88bbd70827d993026821914dd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/307fb34a5ab697461ec4c9db865b20ff2fd40771", - "reference": "307fb34a5ab697461ec4c9db865b20ff2fd40771", + "url": "https://api.github.com/repos/filp/whoops/zipball/c13c0be93cff50f88bbd70827d993026821914dd", + "reference": "c13c0be93cff50f88bbd70827d993026821914dd", "shasum": "" }, "require": { @@ -116,9 +116,15 @@ ], "support": { "issues": "https://github.com/filp/whoops/issues", - "source": "https://github.com/filp/whoops/tree/2.9.1" + "source": "https://github.com/filp/whoops/tree/2.12.1" }, - "time": "2020-11-01T12:00:00+00:00" + "funding": [ + { + "url": "https://github.com/denis-sokolov", + "type": "github" + } + ], + "time": "2021-04-25T12:00:00+00:00" }, { "name": "getkirby/composer-installer", @@ -232,24 +238,26 @@ }, { "name": "laminas/laminas-zendframework-bridge", - "version": "1.1.1", + "version": "1.2.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-zendframework-bridge.git", - "reference": "6ede70583e101030bcace4dcddd648f760ddf642" + "reference": "6cccbddfcfc742eb02158d6137ca5687d92cee32" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-zendframework-bridge/zipball/6ede70583e101030bcace4dcddd648f760ddf642", - "reference": "6ede70583e101030bcace4dcddd648f760ddf642", + "url": "https://api.github.com/repos/laminas/laminas-zendframework-bridge/zipball/6cccbddfcfc742eb02158d6137ca5687d92cee32", + "reference": "6cccbddfcfc742eb02158d6137ca5687d92cee32", "shasum": "" }, "require": { - "php": "^5.6 || ^7.0 || ^8.0" + "php": "^7.3 || ^8.0" }, "require-dev": { "phpunit/phpunit": "^5.7 || ^6.5 || ^7.5 || ^8.1 || ^9.3", - "squizlabs/php_codesniffer": "^3.5" + "psalm/plugin-phpunit": "^0.15.1", + "squizlabs/php_codesniffer": "^3.5", + "vimeo/psalm": "^4.6" }, "type": "library", "extra": { @@ -288,7 +296,7 @@ "type": "community_bridge" } ], - "time": "2020-09-14T14:23:00+00:00" + "time": "2021-02-25T21:54:58+00:00" }, { "name": "league/color-extractor", @@ -454,16 +462,16 @@ }, { "name": "phpmailer/phpmailer", - "version": "v6.2.0", + "version": "v6.4.1", "source": { "type": "git", "url": "https://github.com/PHPMailer/PHPMailer.git", - "reference": "e38888a75c070304ca5514197d4847a59a5c853f" + "reference": "9256f12d8fb0cd0500f93b19e18c356906cbed3d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/e38888a75c070304ca5514197d4847a59a5c853f", - "reference": "e38888a75c070304ca5514197d4847a59a5c853f", + "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/9256f12d8fb0cd0500f93b19e18c356906cbed3d", + "reference": "9256f12d8fb0cd0500f93b19e18c356906cbed3d", "shasum": "" }, "require": { @@ -481,7 +489,7 @@ "yoast/phpunit-polyfills": "^0.2.0" }, "suggest": { - "ext-mbstring": "Needed to send email in multibyte encoding charset", + "ext-mbstring": "Needed to send email in multibyte encoding charset or decode encoded addresses", "hayageek/oauth2-yahoo": "Needed for Yahoo XOAUTH2 authentication", "league/oauth2-google": "Needed for Google XOAUTH2 authentication", "psr/log": "For optional PSR-3 debug logging", @@ -518,7 +526,7 @@ "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" + "source": "https://github.com/PHPMailer/PHPMailer/tree/v6.4.1" }, "funding": [ { @@ -526,20 +534,20 @@ "type": "github" } ], - "time": "2020-11-25T15:24:57+00:00" + "time": "2021-04-29T12:25:04+00:00" }, { "name": "psr/log", - "version": "1.1.3", + "version": "1.1.4", "source": { "type": "git", "url": "https://github.com/php-fig/log.git", - "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc" + "reference": "d49695b909c3b7628b6289db5479a1c204601f11" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc", - "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc", + "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11", + "reference": "d49695b909c3b7628b6289db5479a1c204601f11", "shasum": "" }, "require": { @@ -563,7 +571,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common interface for logging libraries", @@ -574,9 +582,9 @@ "psr-3" ], "support": { - "source": "https://github.com/php-fig/log/tree/1.1.3" + "source": "https://github.com/php-fig/log/tree/1.1.4" }, - "time": "2020-03-23T09:12:05+00:00" + "time": "2021-05-03T11:20:27+00:00" }, { "name": "symfony/polyfill-mbstring", diff --git a/kirby/config/api/routes/pages.php b/kirby/config/api/routes/pages.php index 3cd4d6d..04cc8a2 100755 --- a/kirby/config/api/routes/pages.php +++ b/kirby/config/api/routes/pages.php @@ -36,7 +36,10 @@ return [ [ 'pattern' => [ 'pages/(:any)/blueprints', - // Deprecated: remove in 3.6.0 + /** + * @deprecated + * @todo remove in 3.6.0 + */ 'pages/(:any)/children/blueprints', ], 'method' => 'GET', diff --git a/kirby/config/api/routes/site.php b/kirby/config/api/routes/site.php index acfbf76..68c706f 100755 --- a/kirby/config/api/routes/site.php +++ b/kirby/config/api/routes/site.php @@ -49,7 +49,10 @@ return [ [ 'pattern' => [ 'site/blueprints', - // Deprecated: remove in 3.6.0 + /** + * @deprecated + * @todo remove in 3.6.0 + */ 'site/children/blueprints', ], 'method' => 'GET', diff --git a/kirby/config/components.php b/kirby/config/components.php index 51c81fe..0dd34ef 100755 --- a/kirby/config/components.php +++ b/kirby/config/components.php @@ -330,6 +330,8 @@ return [ * @param Closure $originalHandler Deprecated: Callback function to the original URL handler with `$path` and `$options` as parameters * Use `$kirby->nativeComponent('url')` inside your URL component instead. * @return string + * + * @todo Remove $originalHandler parameter in 3.6.0 */ 'url' => function (App $kirby, string $path = null, $options = null, Closure $originalHandler = null): string { $language = null; diff --git a/kirby/config/fields/list.php b/kirby/config/fields/list.php index cfc487c..b4b1ba7 100755 --- a/kirby/config/fields/list.php +++ b/kirby/config/fields/list.php @@ -8,5 +8,10 @@ return [ 'marks' => function ($marks = true) { return $marks; } + ], + 'computed' => [ + 'value' => function () { + return trim($this->value); + } ] ]; diff --git a/kirby/config/fields/writer.php b/kirby/config/fields/writer.php index a726611..67ca348 100755 --- a/kirby/config/fields/writer.php +++ b/kirby/config/fields/writer.php @@ -12,9 +12,22 @@ return [ }, /** * 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` + * @param array|bool $marks */ 'marks' => function ($marks = true) { return $marks; + }, + /** + * Sets the allowed nodes. Available nodes: `bulletList`, `orderedList`, `heading`, `horizontalRule`, `listItem`. Activate/deactivate them all by passing `true`/`false`. Default nodes are `heading`, `bulletList`, `orderedList`. + * @param array|bool|null $nodes + */ + 'nodes' => function ($nodes = null) { + return $nodes; } - ] + ], + 'computed' => [ + 'value' => function () { + return trim($this->value); + } + ], ]; diff --git a/kirby/config/helpers.php b/kirby/config/helpers.php index 16f65ea..800538e 100755 --- a/kirby/config/helpers.php +++ b/kirby/config/helpers.php @@ -171,14 +171,13 @@ if (function_exists('e') === false) { * Escape context specific output * * @param string $string Untrusted data - * @param string $context Location of output - * @param bool $strict Whether to escape an extended set of characters (HTML attributes only) + * @param string $context Location of output (`html`, `attr`, `js`, `css`, `url` or `xml`) * @return string Escaped data */ -function esc($string, $context = 'html', $strict = false) +function esc($string, $context = 'html') { if (method_exists('Kirby\Toolkit\Escape', $context) === true) { - return Escape::$context($string, $strict); + return Escape::$context($string); } return $string; @@ -308,15 +307,25 @@ function invalid(array $data = [], array $rules = [], array $messages = []) // See: http://php.net/manual/en/types.comparisons.php // only false for: null, undefined variable, '', [] - $filled = isset($data[$field]) && $data[$field] !== '' && $data[$field] !== []; + $value = $data[$field] ?? null; + $filled = $value !== null && $value !== '' && $value !== []; $message = $messages[$field] ?? $field; // True if there is an error message for each validation method. $messageArray = is_array($message); foreach ($validations as $method => $options) { + // If the index is numeric, there is no option + // and `$value` is sent directly as a `$options` parameter if (is_numeric($method) === true) { - $method = $options; + $method = $options; + $options = [$value]; + } else { + if (is_array($options) === false) { + $options = [$options]; + } + + array_unshift($options, $value); } $validationIndex++; @@ -327,12 +336,6 @@ function invalid(array $data = [], array $rules = [], array $messages = []) continue; } } elseif ($filled) { - if (is_array($options) === false) { - $options = [$options]; - } - - array_unshift($options, $data[$field] ?? null); - if (V::$method(...$options) === true) { // Field is filled and passes validation method. continue; diff --git a/kirby/config/methods.php b/kirby/config/methods.php index d0f683b..ef073cf 100755 --- a/kirby/config/methods.php +++ b/kirby/config/methods.php @@ -337,7 +337,7 @@ return function (App $app) { * templates without the risk of XSS attacks * * @param \Kirby\Cms\Field $field - * @param string $context html, attr, js or css + * @param string $context Location of output (`html`, `attr`, `js`, `css`, `url` or `xml`) */ 'escape' => function (Field $field, string $context = 'html') { $field->value = esc($field->value, $context); @@ -528,7 +528,7 @@ return function (App $app) { * Converts the field content to a slug * * @param \Kirby\Cms\Field $field - * @return \Kirby\cms\Field + * @return \Kirby\Cms\Field */ 'slug' => function (Field $field) { $field->value = Str::slug($field->value); @@ -539,7 +539,7 @@ return function (App $app) { * Applies SmartyPants to the field * * @param \Kirby\Cms\Field $field - * @return \Kirby\cms\Field + * @return \Kirby\Cms\Field */ 'smartypants' => function (Field $field) use ($app) { $field->value = $app->smartypants($field->value); @@ -560,7 +560,7 @@ return function (App $app) { * Converts the field content to uppercase * * @param \Kirby\Cms\Field $field - * @return \Kirby\cms\Field + * @return \Kirby\Cms\Field */ 'upper' => function (Field $field) { $field->value = Str::upper($field->value); @@ -572,7 +572,7 @@ return function (App $app) { * the last space with ` ` * * @param \Kirby\Cms\Field $field - * @return \Kirby\cms\Field + * @return \Kirby\Cms\Field */ 'widont' => function (Field $field) { $field->value = Str::widont($field->value); diff --git a/kirby/config/tags.php b/kirby/config/tags.php index 63eb9a4..00168f7 100755 --- a/kirby/config/tags.php +++ b/kirby/config/tags.php @@ -2,6 +2,9 @@ use Kirby\Cms\Html; use Kirby\Cms\Url; +use Kirby\Text\KirbyTag; +use Kirby\Toolkit\F; +use Kirby\Toolkit\Str; /** * Default KirbyTags definition @@ -236,23 +239,113 @@ return [ */ 'video' => [ 'attr' => [ - 'class', + 'autoplay', 'caption', + 'controls', + 'class', 'height', - 'width' + 'loop', + 'muted', + 'poster', + 'preload', + 'style', + 'width', ], 'html' => function ($tag) { - $video = Html::video( - $tag->value, - $tag->kirby()->option('kirbytext.video.options', []), - [ - 'height' => $tag->height ?? $tag->kirby()->option('kirbytext.video.height'), - 'width' => $tag->width ?? $tag->kirby()->option('kirbytext.video.width'), - ] - ); + // all available video tag attributes + $availableAttrs = KirbyTag::$types[$tag->type]['attr']; - return Html::figure([$video], $tag->caption, [ - 'class' => $tag->class ?? $tag->kirby()->option('kirbytext.video.class', 'video'), + // global video tag options + $attrs = $tag->kirby()->option('kirbytext.video', []); + $options = $attrs['options'] ?? []; + + // removes options from attributes + if (isset($attrs['options']) === true) { + unset($attrs['options']); + } + + // injects default values from global options + // applies only defined attributes to safely update tag props + foreach ($attrs as $key => $value) { + if ( + in_array($key, $availableAttrs) === true && + (isset($tag->{$key}) === false || $tag->{$key} === null) + ) { + $tag->{$key} = $value; + } + } + + // checks and gets if poster is local file + if ( + empty($tag->poster) === false && + Str::startsWith($tag->poster, 'http://') !== true && + Str::startsWith($tag->poster, 'https://') !== true + ) { + if ($poster = $tag->file($tag->poster)) { + $tag->poster = $poster->url(); + } + } + + // converts tag attributes to supported formats (listed below) to output correct html + // booleans: autoplay, controls, loop, muted + // strings : height, poster, preload, width + // for ex : `autoplay` will not work if `false` is a `string` instead of a `boolean` + $attrs = [ + 'autoplay' => $autoplay = Str::toType($tag->autoplay, 'bool'), + 'controls' => Str::toType($tag->controls ?? true, 'bool'), + 'height' => $tag->height, + 'loop' => Str::toType($tag->loop, 'bool'), + 'muted' => Str::toType($tag->muted ?? $autoplay, 'bool'), + 'poster' => $tag->poster, + 'preload' => $tag->preload, + 'width' => $tag->width + ]; + + // handles local and remote video file + if ( + Str::startsWith($tag->value, 'http://') !== true && + Str::startsWith($tag->value, 'https://') !== true + ) { + // handles local video file + if ($tag->file = $tag->file($tag->value)) { + $source = Html::tag('source', null, [ + 'src' => $tag->file->url(), + 'type' => $tag->file->mime() + ]); + $video = Html::tag('video', [$source], $attrs); + } + } else { + // firstly handles supported video providers as youtube, vimeo, etc + try { + $video = Html::video( + $tag->value, + $options, + // providers only support width and height attributes + [ + 'height' => $tag->height, + 'width' => $tag->width + ] + ); + } catch (Exception $e) { + // if not one of the supported video providers + // it checks if there is a valid remote video file + $extension = F::extension($tag->value); + $type = F::extensionToType($extension); + $mime = F::extensionToMime($extension); + + if ($type === 'video') { + $source = Html::tag('source', null, [ + 'src' => $tag->value, + 'type' => $mime + ]); + $video = Html::tag('video', [$source], $attrs); + } + } + } + + return Html::figure([$video ?? ''], $tag->caption, [ + 'class' => $tag->class ?? 'video', + 'style' => $tag->style ]); } ], diff --git a/kirby/config/templates/emails/auth/login.php b/kirby/config/templates/emails/auth/login.php index fbb3890..55d9dce 100755 --- a/kirby/config/templates/emails/auth/login.php +++ b/kirby/config/templates/emails/auth/login.php @@ -5,4 +5,4 @@ * @var string $code * @var int $timeout */ -echo I18n::template('login.email.login.body', null, compact('user', 'code', 'timeout')); +echo I18n::template('login.email.login.body', null, compact('user', 'code', 'timeout'), $user->language()); diff --git a/kirby/config/templates/emails/auth/password-reset.php b/kirby/config/templates/emails/auth/password-reset.php index d5ba5e7..ff1e09c 100755 --- a/kirby/config/templates/emails/auth/password-reset.php +++ b/kirby/config/templates/emails/auth/password-reset.php @@ -5,4 +5,4 @@ * @var string $code * @var int $timeout */ -echo I18n::template('login.email.password-reset.body', null, compact('user', 'code', 'timeout')); +echo I18n::template('login.email.password-reset.body', null, compact('user', 'code', 'timeout'), $user->language()); diff --git a/kirby/i18n/translations/bg.json b/kirby/i18n/translations/bg.json index ed86f93..8f117e4 100755 --- a/kirby/i18n/translations/bg.json +++ b/kirby/i18n/translations/bg.json @@ -118,7 +118,7 @@ "error.page.duplicate.permission": "You are not allowed to duplicate \"{slug}\"", "error.page.notFound": "Страницата \"{slug}\" не може да бъде намерена", "error.page.num.invalid": "Моля въведете валидно число за сортиране. Числата не трябва да са негативни.", - "error.page.slug.invalid": "Моля въведете валиден URL префикс", + "error.page.slug.invalid": "Please enter a valid URL appendix", "error.page.slug.maxlength": "Slug length must be less than \"{length}\" characters", "error.page.sort.permission": "Страницата \"{slug}\" не може да бъде сортирана", "error.page.status.invalid": "Моля изберете валиден статус на страницата", @@ -163,6 +163,7 @@ "error.user.password.invalid": "Моля въведете валидна парола. Тя трабва да съдържа поне 8 символа.", "error.user.password.notSame": "\u041c\u043e\u043b\u044f, \u043f\u043e\u0442\u0432\u044a\u0440\u0434\u0435\u0442\u0435 \u043f\u0430\u0440\u043e\u043b\u0430\u0442\u0430", "error.user.password.undefined": "Потребителят няма парола", + "error.user.password.wrong": "Wrong password", "error.user.role.invalid": "Моля въведете валидна роля", "error.user.update.permission": "Нямате права да обновите този потребител \"{name}\"", diff --git a/kirby/i18n/translations/ca.json b/kirby/i18n/translations/ca.json index 91c3cce..36fc6c7 100755 --- a/kirby/i18n/translations/ca.json +++ b/kirby/i18n/translations/ca.json @@ -118,7 +118,7 @@ "error.page.duplicate.permission": "No tens permís per duplicar \"{slug}\"", "error.page.notFound": "La pàgina \"{slug}\" no s'ha trobat", "error.page.num.invalid": "Si us plau, introdueix un número d 'ordenació vàlid. Els números no poden ser negatius.", - "error.page.slug.invalid": "Introduïu un prefix d'URL vàlid", + "error.page.slug.invalid": "Please enter a valid URL appendix", "error.page.slug.maxlength": "La longitud del nom ha de tenir menys de caràcters \"{length}\"", "error.page.sort.permission": "La pàgina \"{slug}\" no es pot ordenar", "error.page.status.invalid": "Si us plau, estableix un estat de pàgina vàlid", @@ -163,6 +163,7 @@ "error.user.password.invalid": "Introduïu una contrasenya vàlida. Les contrasenyes han de tenir com a mínim 8 caràcters.", "error.user.password.notSame": "Les contrasenyes no coincideixen", "error.user.password.undefined": "L'usuari no té una contrasenya", + "error.user.password.wrong": "Wrong password", "error.user.role.invalid": "Si us plau, introdueix un rol vàlid", "error.user.update.permission": "No tens permís per actualitzar l'usuari \"{name}\"", diff --git a/kirby/i18n/translations/cs.json b/kirby/i18n/translations/cs.json index 323a7c0..255e25e 100755 --- a/kirby/i18n/translations/cs.json +++ b/kirby/i18n/translations/cs.json @@ -118,7 +118,7 @@ "error.page.duplicate.permission": "Nemáte dovoleno duplikovat \"{slug}\"", "error.page.notFound": "Str\u00e1nku se nepoda\u0159ilo nal\u00e9zt.", "error.page.num.invalid": "Zadejte prosím platné pořadové číslo. Čísla nesmí být záporná.", - "error.page.slug.invalid": "Zadejte prosím platnou předponu URL", + "error.page.slug.invalid": "Please enter a valid URL appendix", "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", @@ -163,6 +163,7 @@ "error.user.password.invalid": "Zadejte prosím platné heslo. Heslo musí být dlouhé alespoň 8 znaků.", "error.user.password.notSame": "Pros\u00edm potvr\u010fte heslo", "error.user.password.undefined": "Uživatel nemá nastavené heslo.", + "error.user.password.wrong": "Wrong password", "error.user.role.invalid": "Zadejte prosím platnou roli", "error.user.update.permission": "Nemáte dovoleno upravit uživatele \"{name}\"", @@ -232,7 +233,7 @@ "field.blocks.image.name": "Obrázek", "field.blocks.image.placeholder": "Vyberte obrázek", "field.blocks.image.ratio": "Poměr stran", - "field.blocks.image.url": "Image URL", + "field.blocks.image.url": "URL obrázku", "field.blocks.list.name": "Seznam", "field.blocks.markdown.name": "Markdown", "field.blocks.markdown.label": "Text", diff --git a/kirby/i18n/translations/da.json b/kirby/i18n/translations/da.json index 433b6c0..33a49c3 100755 --- a/kirby/i18n/translations/da.json +++ b/kirby/i18n/translations/da.json @@ -118,7 +118,7 @@ "error.page.duplicate.permission": "Du har ikke mulighed for at duplikere \"{slug}\"", "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.invalid": "Please enter a valid URL appendix", "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", @@ -163,6 +163,7 @@ "error.user.password.invalid": "Indtast venligst en gyldig adgangskode. Adgangskoder skal minimum være 8 tegn lange.", "error.user.password.notSame": "Bekr\u00e6ft venligst adgangskoden", "error.user.password.undefined": "Brugeren har ikke en adgangskode", + "error.user.password.wrong": "Wrong password", "error.user.role.invalid": "Indtast venligst en gyldig rolle", "error.user.update.permission": "Du har ikke tilladelse til at opdatere brugeren \"{name}\"", diff --git a/kirby/i18n/translations/de.json b/kirby/i18n/translations/de.json index 7ddef2f..1969dba 100755 --- a/kirby/i18n/translations/de.json +++ b/kirby/i18n/translations/de.json @@ -71,7 +71,7 @@ "error.file.extension.missing": "Du kannst keine Dateien ohne Dateiendung hochladen", "error.file.maxheight": "Die Bildhöhe darf {height} Pixel nicht überschreiten", "error.file.maxsize": "Die Datei ist zu groß", - "error.file.maxwidth": "Die Bildbreite darf {height} Pixel nicht überschreiten", + "error.file.maxwidth": "Die Bildbreite darf {width} Pixel nicht überschreiten", "error.file.mime.differs": "Die Datei muss den Medientyp \"{mime}\" haben.", "error.file.mime.forbidden": "Der Medientyp \"{mime}\" ist nicht erlaubt", "error.file.mime.invalid": "Ungültiger Dateityp: {mime}", @@ -163,6 +163,7 @@ "error.user.password.invalid": "Bitte gib ein gültiges Passwort ein. Passwörter müssen mindestens 8 Zeichen lang sein.", "error.user.password.notSame": "Die Passwörter stimmen nicht überein", "error.user.password.undefined": "Der Account hat kein Passwort", + "error.user.password.wrong": "Falsches Passwort", "error.user.role.invalid": "Bitte gib eine gültige Rolle an", "error.user.update.permission": "Du darfst den den Account \"{name}\" nicht bearbeiten", diff --git a/kirby/i18n/translations/el.json b/kirby/i18n/translations/el.json index 9fb7991..5af95a0 100755 --- a/kirby/i18n/translations/el.json +++ b/kirby/i18n/translations/el.json @@ -118,7 +118,7 @@ "error.page.duplicate.permission": "You are not allowed to duplicate \"{slug}\"", "error.page.notFound": "Δεν ήταν δυνατή η εύρεση της σελίδας \"{slug}\"", "error.page.num.invalid": "Παρακαλώ εισάγετε έναν έγκυρο αριθμό ταξινόμησης. Οι αριθμοί δεν μπορεί να είναι αρνητικοί.", - "error.page.slug.invalid": "Παρακαλώ εισάγετε ένα έγκυρο πρόθεμα διεύθυνσης URL", + "error.page.slug.invalid": "Please enter a valid URL appendix", "error.page.slug.maxlength": "Slug length must be less than \"{length}\" characters", "error.page.sort.permission": "Δεν είναι δυνατή η ταξινόμηση της σελίδας \"{slug}\"", "error.page.status.invalid": "Ορίστε μια έγκυρη κατάσταση σελίδας", @@ -163,6 +163,7 @@ "error.user.password.invalid": "Παρακαλώ εισάγετε έναν έγκυρο κωδικό πρόσβασης. Οι κωδικοί πρόσβασης πρέπει να έχουν μήκος τουλάχιστον 8 χαρακτήρων.", "error.user.password.notSame": "\u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03bf\u03cd\u03bc\u03b5 \u03b5\u03c0\u03b9\u03b2\u03b5\u03b2\u03b1\u03b9\u03ce\u03c3\u03c4\u03b5 \u03c4\u03bf\u03bd \u039a\u03c9\u03b4\u03b9\u03ba\u03cc \u03a0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2", "error.user.password.undefined": "Ο χρήστης δεν έχει κωδικό πρόσβασης", + "error.user.password.wrong": "Wrong password", "error.user.role.invalid": "Παρακαλώ εισαγάγετε έναν έγκυρο ρόλο", "error.user.update.permission": "Δεν επιτρέπεται η ενημέρωση του χρήστη \"{name}\"", diff --git a/kirby/i18n/translations/en.json b/kirby/i18n/translations/en.json index 91ab6fd..a710b05 100755 --- a/kirby/i18n/translations/en.json +++ b/kirby/i18n/translations/en.json @@ -118,7 +118,7 @@ "error.page.duplicate.permission": "You are not allowed to duplicate \"{slug}\"", "error.page.notFound": "The page \"{slug}\" cannot be found", "error.page.num.invalid": "Please enter a valid sorting number. Numbers must not be negative.", - "error.page.slug.invalid": "Please enter a valid URL prefix", + "error.page.slug.invalid": "Please enter a valid URL appendix", "error.page.slug.maxlength": "Slug length must be less than \"{length}\" characters", "error.page.sort.permission": "The page \"{slug}\" cannot be sorted", "error.page.status.invalid": "Please set a valid page status", @@ -163,6 +163,7 @@ "error.user.password.invalid": "Please enter a valid password. Passwords must be at least 8 characters long.", "error.user.password.notSame": "The passwords do not match", "error.user.password.undefined": "The user does not have a password", + "error.user.password.wrong": "Wrong password", "error.user.role.invalid": "Please enter a valid role", "error.user.update.permission": "You are not allowed to update the user \"{name}\"", diff --git a/kirby/i18n/translations/es_419.json b/kirby/i18n/translations/es_419.json index 556bb5d..3fd40c2 100755 --- a/kirby/i18n/translations/es_419.json +++ b/kirby/i18n/translations/es_419.json @@ -118,7 +118,7 @@ "error.page.duplicate.permission": "No tienes permitido duplicar \"{slug}\"", "error.page.notFound": "La página \"{slug}\" no se encuentra", "error.page.num.invalid": "Por favor, introduce un número de posición válido. Los números no deben ser negativos.", - "error.page.slug.invalid": "Por favor ingresa un prefijo de URL válido", + "error.page.slug.invalid": "Please enter a valid URL appendix", "error.page.slug.maxlength": "Slug length must be less than \"{length}\" characters", "error.page.sort.permission": "La página \"{slug}\" no se puede ordenar", "error.page.status.invalid": "Por favor, establece una estado de página válido", @@ -163,6 +163,7 @@ "error.user.password.invalid": "Por favor ingresa una contraseña valida. Las contraseñas deben tener al menos 8 caracteres de largo.", "error.user.password.notSame": "Por favor confirma la contrase\u00f1a", "error.user.password.undefined": "El usuario no tiene contraseña", + "error.user.password.wrong": "Wrong password", "error.user.role.invalid": "Por favor ingresa un rol valido", "error.user.update.permission": "No tienes permiso para actualizar al usuario \"{name}\"", diff --git a/kirby/i18n/translations/es_ES.json b/kirby/i18n/translations/es_ES.json index 984d3a9..709f95c 100755 --- a/kirby/i18n/translations/es_ES.json +++ b/kirby/i18n/translations/es_ES.json @@ -118,7 +118,7 @@ "error.page.duplicate.permission": "You are not allowed to duplicate \"{slug}\"", "error.page.notFound": "La página \"{slug}\" no puede ser encontrada", "error.page.num.invalid": "Por favor, introduzca un número válido. Estos no deben ser negativos.", - "error.page.slug.invalid": "Por favor ingrese un prefijo de URL válido", + "error.page.slug.invalid": "Please enter a valid URL appendix", "error.page.slug.maxlength": "Slug length must be less than \"{length}\" characters", "error.page.sort.permission": "La página \"{slug}\" no se puede ordenar", "error.page.status.invalid": "Por favor, establezca un estado de página válido", @@ -163,6 +163,7 @@ "error.user.password.invalid": "Por favor introduce una contraseña válida. Las contraseñas deben tener al menos 8 caracteres de largo.", "error.user.password.notSame": "Las contraseñas no coinciden", "error.user.password.undefined": "El usuario no tiene contraseña", + "error.user.password.wrong": "Wrong password", "error.user.role.invalid": "Por favor ingrese un rol válido", "error.user.update.permission": "No tienes permitido actualizar al usuario \"{name}\"", diff --git a/kirby/i18n/translations/fa.json b/kirby/i18n/translations/fa.json index 1a2bf6d..dba4fe1 100755 --- a/kirby/i18n/translations/fa.json +++ b/kirby/i18n/translations/fa.json @@ -118,7 +118,7 @@ "error.page.duplicate.permission": "You are not allowed to duplicate \"{slug}\"", "error.page.notFound": "صفحه مورد نظر با آدرس «{slug}» پیدا نشد.", "error.page.num.invalid": "لطفا شماره ترتیب را بدرستی وارد نمایید. اعداد نباید منفی باشند.", - "error.page.slug.invalid": "لطفا یک پیشوند Url صحیح وارد کنید", + "error.page.slug.invalid": "Please enter a valid URL appendix", "error.page.slug.maxlength": "Slug length must be less than \"{length}\" characters", "error.page.sort.permission": "امکان مرتب‌سازی «{slug}» نیست", "error.page.status.invalid": "لطفا وضعیت صحیحی برای صفحه انتخاب کنید", @@ -163,6 +163,7 @@ "error.user.password.invalid": "لطفا گذرواژه صحیحی با حداقل طول 8 حرف وارد کنید. ", "error.user.password.notSame": "\u0644\u0637\u0641\u0627 \u062a\u06a9\u0631\u0627\u0631 \u06af\u0630\u0631\u0648\u0627\u0698\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u0646\u0645\u0627\u06cc\u06cc\u062f", "error.user.password.undefined": "کاربر فاقد گذرواژه است", + "error.user.password.wrong": "Wrong password", "error.user.role.invalid": "لطفا نقش صحیحی وارد نمایید", "error.user.update.permission": "شما اجازه بروزرسانی کاربر «{name}» را ندارید", diff --git a/kirby/i18n/translations/fi.json b/kirby/i18n/translations/fi.json index b09b7f6..9b055bb 100755 --- a/kirby/i18n/translations/fi.json +++ b/kirby/i18n/translations/fi.json @@ -118,7 +118,7 @@ "error.page.duplicate.permission": "Sinulla ei ole oikeutta kahdentaa sivua \"{slug}\"", "error.page.notFound": "Sivua \"{slug}\" ei löytynyt", "error.page.num.invalid": "Anna kelpaava järjestysnumero. Numero ei voi olla negatiivinen.", - "error.page.slug.invalid": "Anna kelpaava URL-etuliite", + "error.page.slug.invalid": "Please enter a valid URL appendix", "error.page.slug.maxlength": "Slug length must be less than \"{length}\" characters", "error.page.sort.permission": "Sivua \"{slug}\" ei voi järjestellä", "error.page.status.invalid": "Aseta kelvollinen sivun tila", @@ -163,6 +163,7 @@ "error.user.password.invalid": "Anna kelpaava salasana. Salasanan täytyy olla ainakin 8 merkkiä pitkä.", "error.user.password.notSame": "Salasanat eivät täsmää", "error.user.password.undefined": "Käyttäjällä ei ole salasanaa", + "error.user.password.wrong": "Wrong password", "error.user.role.invalid": "Anna kelpaava käyttäjätaso", "error.user.update.permission": "Sinulla ei ole oikeutta päivittää käyttäjää \"{name}\"", diff --git a/kirby/i18n/translations/fr.json b/kirby/i18n/translations/fr.json index bc77d21..4a975b4 100755 --- a/kirby/i18n/translations/fr.json +++ b/kirby/i18n/translations/fr.json @@ -118,7 +118,7 @@ "error.page.duplicate.permission": "Vous n'êtes pas autorisé à dupliquer « {slug} »", "error.page.notFound": "La page « {slug} » n’a pu être trouvée", "error.page.num.invalid": "Veuillez saisir un numéro de position valide. Les numéros ne doivent pas être négatifs.", - "error.page.slug.invalid": "Veuillez saisir un préfixe d’URL valide", + "error.page.slug.invalid": "Veuillez entrer un identifiant d’URL valide", "error.page.slug.maxlength": "L’identifiant d’URL doit faire moins de \"{length}\" caractères", "error.page.sort.permission": "La page « {slug} » ne peut être réordonnée", "error.page.status.invalid": "Veuillez choisir un statut de page valide", @@ -163,6 +163,7 @@ "error.user.password.invalid": "Veuillez saisir un mot de passe valide. Les mots de passe doivent comporter au moins 8 caractères.", "error.user.password.notSame": "Les mots de passe ne sont pas identiques", "error.user.password.undefined": "Cet utilisateur n’a pas de mot de passe", + "error.user.password.wrong": "Mot de passe incorrect", "error.user.role.invalid": "Veuillez saisir un rôle valide", "error.user.update.permission": "Vous n’êtes pas autorisé à modifier l’utilisateur « {name} »", diff --git a/kirby/i18n/translations/hu.json b/kirby/i18n/translations/hu.json index facb72b..57f5d36 100755 --- a/kirby/i18n/translations/hu.json +++ b/kirby/i18n/translations/hu.json @@ -118,7 +118,7 @@ "error.page.duplicate.permission": "Nincs engedélyed a(z) \"{slug}\" másolat keszítéséhez", "error.page.notFound": "Az oldal nem tal\u00e1lhat\u00f3", "error.page.num.invalid": "Kérlek megfelelő oldalszámozást adj meg. Negatív szám itt nem használható.", - "error.page.slug.invalid": "Kérlek megfelelő URL-előtagot adj meg", + "error.page.slug.invalid": "Please enter a valid URL appendix", "error.page.slug.maxlength": "Slug length must be less than \"{length}\" characters", "error.page.sort.permission": "A(z) \"{slug}\" oldal nem illeszthető a sorrendbe", "error.page.status.invalid": "Kérlek add meg a megfelelő oldalstátuszt", @@ -163,6 +163,7 @@ "error.user.password.invalid": "Kérlek adj meg egy megfelelő jelszót. A jelszónak legalább 8 karakter hosszúságúnak kell lennie.", "error.user.password.notSame": "K\u00e9rlek er\u0151s\u00edtsd meg a jelsz\u00f3t", "error.user.password.undefined": "A felhasználónak nincs jelszó megadva", + "error.user.password.wrong": "Wrong password", "error.user.role.invalid": "Kérlek adj meg egy megfelelő szerepkört", "error.user.update.permission": "Nincs jogosultságod frissíteni \"{name}\" felhasználó adatait", diff --git a/kirby/i18n/translations/id.json b/kirby/i18n/translations/id.json index 8dae04c..c59a5c5 100755 --- a/kirby/i18n/translations/id.json +++ b/kirby/i18n/translations/id.json @@ -118,7 +118,7 @@ "error.page.duplicate.permission": "Anda tidak diizinkan menduplikasi \"{slug}\"", "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.invalid": "Please enter a valid URL appendix", "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", @@ -163,6 +163,7 @@ "error.user.password.invalid": "Masukkan sandi yang valid. Sandi setidaknya mengandung 8 karakter.", "error.user.password.notSame": "Sandi tidak cocok", "error.user.password.undefined": "Pengguna tidak memiliki sandi", + "error.user.password.wrong": "Wrong password", "error.user.role.invalid": "Masukkan peran yang valid", "error.user.update.permission": "Anda tidak diizinkan memperbaharui pengguna \"{name}\"", diff --git a/kirby/i18n/translations/it.json b/kirby/i18n/translations/it.json index 959e61f..c9591a9 100755 --- a/kirby/i18n/translations/it.json +++ b/kirby/i18n/translations/it.json @@ -118,7 +118,7 @@ "error.page.duplicate.permission": "Non ti è permesso duplicare \"{slug}\"", "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.invalid": "Please enter a valid URL appendix", "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", @@ -163,6 +163,7 @@ "error.user.password.invalid": "Per favore inserisci una password valida. Le password devono essere lunghe almeno 8 caratteri", "error.user.password.notSame": "Le password non corrispondono", "error.user.password.undefined": "L'utente non ha una password", + "error.user.password.wrong": "Wrong password", "error.user.role.invalid": "Inserisci un ruolo valido", "error.user.update.permission": "Non ti è permesso aggiornare l'utente \"{name}\"", diff --git a/kirby/i18n/translations/ko.json b/kirby/i18n/translations/ko.json index d9ff2dd..ea3aaf7 100755 --- a/kirby/i18n/translations/ko.json +++ b/kirby/i18n/translations/ko.json @@ -118,7 +118,7 @@ "error.page.duplicate.permission": "페이지({slug})를 복제할 권한이 없습니다.", "error.page.notFound": "페이지({slug})가 없습니다.", "error.page.num.invalid": "올바른 정수를 입력하세요.", - "error.page.slug.invalid": "올바른 접두어를 입력하세요.", + "error.page.slug.invalid": "올바른 URL을 입력하세요.", "error.page.slug.maxlength": "{length}자 이하로 고유 주소를 입력하세요.", "error.page.sort.permission": "페이지({slug})를 정렬할 수 없습니다.", "error.page.status.invalid": "올바른 상태를 설정하세요.", @@ -163,6 +163,7 @@ "error.user.password.invalid": "암호를 8자 이상으로 설정하세요.", "error.user.password.notSame": "\uc554\ud638\ub97c \ud655\uc778\ud558\uc138\uc694.", "error.user.password.undefined": "암호가 설정되지 않았습니다.", + "error.user.password.wrong": "암호가 올바르지 않습니다.", "error.user.role.invalid": "올바른 역할을 지정하세요.", "error.user.update.permission": "사용자({name})의 정보를 변경할 권한이 없습니다.", @@ -301,7 +302,7 @@ "language.direction.rtl": "오른쪽에서 왼쪽", "language.locale": "PHP 로캘 문자열", "language.locale.warning": "사용자 지정 로캘을 사용 중입니다. 폴더(/site/languages)의 언어 파일을 수정하세요.", - "language.name": "이름", + "language.name": "언어명", "language.updated": "언어를 변경했습니다.", "languages": "언어", @@ -328,7 +329,7 @@ "lock.isLocked": "다른 사용자({email})가 수정한 사항이 저장되지 않았습니다.", "lock.file.isLocked": "파일을 편집할 수 없습니다. 다른 사용자({email})가 편집 중입니다.", "lock.page.isLocked": "페이지를 편집할 수 없습니다. 다른 사용자({email})가 편집 중입니다.", - "lock.unlock": "잠금", + "lock.unlock": "잠금 해제", "lock.isUnlocked": "다른 사용자가 이미 내용을 수정했으므로 현재 내용이 올바르게 저장되지 않았습니다. 저장되지 않은 내용은 다운로드해 수동으로 대치할 수 있습니다.", "login": "\ub85c\uadf8\uc778", @@ -405,7 +406,7 @@ "page.status.unlisted": "비공개", "page.status.unlisted.description": "URL을 통해 접근할 수 있습니다.", - "pages": "하위 페이지", + "pages": "페이지", "pages.empty": "페이지가 없습니다.", "pages.status.draft": "초안", "pages.status.listed": "발행", diff --git a/kirby/i18n/translations/lt.json b/kirby/i18n/translations/lt.json index b457b4f..3216098 100755 --- a/kirby/i18n/translations/lt.json +++ b/kirby/i18n/translations/lt.json @@ -118,7 +118,7 @@ "error.page.duplicate.permission": "Neturite leidimo dubliuoti \"{slug}\"", "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.invalid": "Please enter a valid URL appendix", "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ą", @@ -163,6 +163,7 @@ "error.user.password.invalid": "Prašome įrašyti galiojantį slaptažodį. Slaptažodį turi sudaryti bent 8 simboliai.", "error.user.password.notSame": "Slaptažodžiai nesutampa", "error.user.password.undefined": "Vartotojas neturi slaptažodžio", + "error.user.password.wrong": "Wrong password", "error.user.role.invalid": "Įrašykite teisingą rolę", "error.user.update.permission": "Neturite teisės keisti vartotojo \"{name}\"", @@ -232,7 +233,7 @@ "field.blocks.image.name": "Nuotrauka", "field.blocks.image.placeholder": "Pasirinkite nuotrauką", "field.blocks.image.ratio": "Proporcijos", - "field.blocks.image.url": "Image URL", + "field.blocks.image.url": "Nuotraukos URL", "field.blocks.list.name": "Sąrašas", "field.blocks.markdown.name": "Markdown", "field.blocks.markdown.label": "Tekstas", diff --git a/kirby/i18n/translations/nb.json b/kirby/i18n/translations/nb.json index 763c311..19aa111 100755 --- a/kirby/i18n/translations/nb.json +++ b/kirby/i18n/translations/nb.json @@ -118,7 +118,7 @@ "error.page.duplicate.permission": "You are not allowed to duplicate \"{slug}\"", "error.page.notFound": "Siden \"{slug}\" ble ikke funnet", "error.page.num.invalid": "Vennligst skriv inn et gyldig sorteringsnummer. Tallet må ikke være negativt.", - "error.page.slug.invalid": "Vennligst skriv inn en gyldig URL-prefiks", + "error.page.slug.invalid": "Please enter a valid URL appendix", "error.page.slug.maxlength": "Slug length must be less than \"{length}\" characters", "error.page.sort.permission": "Siden \"{slug}\" kan ikke sorteres", "error.page.status.invalid": "Vennligst angi en gyldig sidestatus", @@ -163,6 +163,7 @@ "error.user.password.invalid": "Vennligst skriv inn et gyldig passord. Passordet må minst være 8 tegn langt.", "error.user.password.notSame": "Vennligst bekreft passordet", "error.user.password.undefined": "Brukeren har ikke et passord", + "error.user.password.wrong": "Wrong password", "error.user.role.invalid": "Vennligst skriv inn en gyldig rolle", "error.user.update.permission": "Du har ikke tillatelse til å oppdatere brukeren \"{name}\"", diff --git a/kirby/i18n/translations/nl.json b/kirby/i18n/translations/nl.json index 7ef5241..e6df9d5 100755 --- a/kirby/i18n/translations/nl.json +++ b/kirby/i18n/translations/nl.json @@ -118,7 +118,7 @@ "error.page.duplicate.permission": "Je bent niet gemachtigd om \"{slug}\" te dupliceren", "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.invalid": "Please enter a valid URL appendix", "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", @@ -163,6 +163,7 @@ "error.user.password.invalid": "Gelieve een geldig wachtwoord in te voeren. Wachtwoorden moeten minstens 8 karakters lang zijn.", "error.user.password.notSame": "De wachtwoorden komen niet overeen", "error.user.password.undefined": "De gebruiker heeft geen wachtwoord", + "error.user.password.wrong": "Wrong password", "error.user.role.invalid": "Gelieve een geldige rol in te voeren", "error.user.update.permission": "Je hebt geen rechten om gebruiker \"{name}\" te updaten", @@ -232,7 +233,7 @@ "field.blocks.image.name": "Afbeelding", "field.blocks.image.placeholder": "Selecteer een afbeelding", "field.blocks.image.ratio": "Verhouding", - "field.blocks.image.url": "Image URL", + "field.blocks.image.url": "Afbeeldings-URL", "field.blocks.list.name": "Lijst", "field.blocks.markdown.name": "Markdown", "field.blocks.markdown.label": "Tekst", @@ -286,13 +287,13 @@ "installation.issues.mbstring": "De MB String extensie is verplicht", "installation.issues.media": "De map /mediabestaat niet of heeft geen schrijfrechten", "installation.issues.php": "Gebruik PHP7+", - "installation.issues.server": "Kirby vereist Apache, Nginxof Caddy", + "installation.issues.server": "Kirby vereist Apache, Nginx of Caddy", "installation.issues.sessions": "De map /site/sessions bestaat niet of heeft geen schrijfrechten", "language": "Taal", "language.code": "Code", "language.convert": "Maak standaard", - "language.convert.confirm": "

Weet je zeker dat je {name}wilt aanpassen naar de standaard taal? Dit kan niet ongedaan worden gemaakt

Als {name} nog niet vertaalde content heeft, is er geen content meer om op terug te vallen en zouden delen van je site leeg kunnen zijn.

", + "language.convert.confirm": "

Weet je zeker dat je {name} wilt aanpassen naar de standaard taal? Dit kan niet ongedaan worden gemaakt

Als {name} nog niet vertaalde content heeft, is er geen content meer om op terug te vallen en zouden delen van je site leeg kunnen zijn.

", "language.create": "Nieuwe taal toevoegen", "language.delete.confirm": "Weet je zeker dat je de taal {name} inclusief alle vertalingen wilt verwijderen? Je kunt dit niet ongedaan maken!", "language.deleted": "De taal is verwijderd", @@ -335,10 +336,10 @@ "login.code.label.login": "Log in code", "login.code.label.password-reset": "Wachtwoord herstel 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.code.text.email": "Als uw e-mailadres geregistreerd is, werd de gevraagde code per e-mail verzonden.", + "login.email.login.body": "Hallo {user.nameOrEmail},\n\nU heeft onlangs een inlogcode aangevraagd voor het Kirby Panel.\nDe volgende inlogcode is geldig voor {timeout} minuten:\n\n{code}\n\nIndien u geen inlogcode heeft aangevraagd, negeer dan alstublieft deze email of neem contact op met uw beheerder indien u vragen heeft.\nVoor de veiligheid, gelieve deze email NIET door te sturen.", "login.email.login.subject": "Jouw log in 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.body": "Hallo {user.nameOrEmail},\n\nU heeft onlangs een wachtwoord reset code aangevraagd voor het Kirby Panel.\nDe volgende wachtwoord reset code is geldig voor {timeout} minuten:\n\n{code}\n\nAls u geen wachtwoord reset code heeft aangevraagd, negeer deze e-mail dan alstublieft of neem contact op met uw beheerder als u vragen heeft.\nVoor de veiligheid, gelieve deze email NIET door te sturen.", "login.email.password-reset.subject": "Jouw wachtwoord herstel code", "login.remember": "Houd mij ingelogd", "login.reset": "Wachtwoord herstellen", @@ -503,7 +504,7 @@ "user.changeRole.select": "Kies een nieuwe rol", "user.create": "Voeg een nieuwe gebruiker toe", "user.delete": "Verwijder deze gebruiker", - "user.delete.confirm": "Weet je zeker dat je
{email}wil verwijderen?", + "user.delete.confirm": "Weet je zeker dat je
{email} wil verwijderen?", "users": "Gebruikers", diff --git a/kirby/i18n/translations/pl.json b/kirby/i18n/translations/pl.json index 33ab4a9..60af9d1 100755 --- a/kirby/i18n/translations/pl.json +++ b/kirby/i18n/translations/pl.json @@ -118,7 +118,7 @@ "error.page.duplicate.permission": "Nie masz uprawnień, by zduplikować \"{slug}\"", "error.page.notFound": "Nie można znaleźć strony \"{slug}\"", "error.page.num.invalid": "Wprowadź poprawny numer sortujący. Liczby nie mogą być ujemne.", - "error.page.slug.invalid": "Wprowadź poprawną końcówkę adresu URL", + "error.page.slug.invalid": "Please enter a valid URL appendix", "error.page.slug.maxlength": "Slug length must be less than \"{length}\" characters", "error.page.sort.permission": "Nie można sortować strony \"{slug}\"", "error.page.status.invalid": "Ustaw prawidłowy status strony", @@ -163,6 +163,7 @@ "error.user.password.invalid": "Wprowadź prawidłowe hasło. Hasła muszą mieć co najmniej 8 znaków.", "error.user.password.notSame": "Hasła nie są takie same", "error.user.password.undefined": "Użytkownik nie ma hasła", + "error.user.password.wrong": "Wrong password", "error.user.role.invalid": "Wprowadź poprawną rolę", "error.user.update.permission": "Nie masz uprawnień, by zaktualizować użytkownika \"{name}\"", diff --git a/kirby/i18n/translations/pt_BR.json b/kirby/i18n/translations/pt_BR.json index bb50e4e..6d5711a 100755 --- a/kirby/i18n/translations/pt_BR.json +++ b/kirby/i18n/translations/pt_BR.json @@ -118,7 +118,7 @@ "error.page.duplicate.permission": "You are not allowed to duplicate \"{slug}\"", "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 uma URL válida", + "error.page.slug.invalid": "Please enter a valid URL appendix", "error.page.slug.maxlength": "Slug length must be less than \"{length}\" characters", "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", @@ -163,6 +163,7 @@ "error.user.password.invalid": "Digite uma senha válida. Sua senha deve ter pelo menos 8 caracteres.", "error.user.password.notSame": "As senhas não combinam", "error.user.password.undefined": "O usuário não possui uma senha", + "error.user.password.wrong": "Wrong password", "error.user.role.invalid": "Digite um papel válido", "error.user.update.permission": "Você não tem permissão para atualizar o usuário \"{name}\"", diff --git a/kirby/i18n/translations/pt_PT.json b/kirby/i18n/translations/pt_PT.json index 945d409..812f4af 100755 --- a/kirby/i18n/translations/pt_PT.json +++ b/kirby/i18n/translations/pt_PT.json @@ -118,7 +118,7 @@ "error.page.duplicate.permission": "Não tem permissão para duplicar \"{slug}\"", "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.invalid": "Please enter a valid URL appendix", "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", @@ -163,6 +163,7 @@ "error.user.password.invalid": "Digite uma palavra-passe válida. A sua palavra-passe deve ter pelo menos 8 caracteres.", "error.user.password.notSame": "As palavras-passe não combinam", "error.user.password.undefined": "O utilizador não possui uma palavra-passe", + "error.user.password.wrong": "Wrong password", "error.user.role.invalid": "Digite uma função válida", "error.user.update.permission": "Não tem permissões para atualizar o utilizador \"{name}\"", diff --git a/kirby/i18n/translations/ru.json b/kirby/i18n/translations/ru.json index 5345926..ca14a4a 100755 --- a/kirby/i18n/translations/ru.json +++ b/kirby/i18n/translations/ru.json @@ -38,7 +38,7 @@ "dialog.pages.empty": "Нет страниц для выбора", "dialog.users.empty": "Нет пользователей для выбора", - "email": "Эл. почта", + "email": "Email", "email.placeholder": "mail@example.com", "error.access.code": "Неверный код", @@ -69,9 +69,9 @@ "error.file.extension.forbidden": "Расширение файла \"{extension}\" неразрешено", "error.file.extension.invalid": "Неверное разрешение: {extension}", "error.file.extension.missing": "Файлу \"{filename}\" не хватает расширения", - "error.file.maxheight": "Высота картинки не должна превышать {height} px", + "error.file.maxheight": "Высота изображения не должна превышать {height} px", "error.file.maxsize": "Файл слишком большой", - "error.file.maxwidth": "Ширина картинки не должна превышать {width} px", + "error.file.maxwidth": "Ширина изображения не должна превышать {width} px", "error.file.mime.differs": "Загруженный файл должен быть того же mime типа: \"{mime}\"", "error.file.mime.forbidden": "Тип медиа \"{mime}\" не допустим", "error.file.mime.invalid": "Неверный тип mime: {mime}", @@ -81,7 +81,7 @@ "error.file.minwidth": "Ширина файла должна быть хотя бы {width} px", "error.file.name.missing": "Название файла не может быть пустым", "error.file.notFound": "\u0424\u0430\u0439\u043b \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d", - "error.file.orientation": "Ориентация картинки должна быть \"{orientation}\"", + "error.file.orientation": "Ориентация изображения должна быть \"{orientation}\"", "error.file.type.forbidden": "У вас нет права загружать файлы {type}", "error.file.type.invalid": "Неверный тип файла: {type}", "error.file.undefined": "\u0424\u0430\u0439\u043b \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d", @@ -118,7 +118,7 @@ "error.page.duplicate.permission": "У вас нет права дублировать \"{slug}\"", "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.invalid": "Please enter a valid URL appendix", "error.page.slug.maxlength": "Длина ссылки (ЧПУ) должна быть короче \"{length}\" символов", "error.page.sort.permission": "Невозможно сортировать страницу \"{slug}\"", "error.page.status.invalid": "Пожалуйста, установите верный статус страницы", @@ -163,6 +163,7 @@ "error.user.password.invalid": "Пожалуйста, введите правильный пароль. Он должен состоять минимум из 8 символов.", "error.user.password.notSame": "\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u0435 \u043f\u0430\u0440\u043e\u043b\u044c", "error.user.password.undefined": "У пользователя нет пароля", + "error.user.password.wrong": "Wrong password", "error.user.role.invalid": "Введите правильную роль", "error.user.update.permission": "У вас нет права обновить пользователя \"{name}\"", diff --git a/kirby/i18n/translations/sk.json b/kirby/i18n/translations/sk.json index 0ef8383..6c5acc2 100755 --- a/kirby/i18n/translations/sk.json +++ b/kirby/i18n/translations/sk.json @@ -118,7 +118,7 @@ "error.page.duplicate.permission": "You are not allowed to duplicate \"{slug}\"", "error.page.notFound": "Stránku \"{slug}\" nie je možné nájsť", "error.page.num.invalid": "Prosím, zadajte platné číslo pre radenie. Čísla nemôžu byť záporné.", - "error.page.slug.invalid": "Prosím, zadajte platný URL prefix.", + "error.page.slug.invalid": "Please enter a valid URL appendix", "error.page.slug.maxlength": "Slug length must be less than \"{length}\" characters", "error.page.sort.permission": "Stránku \"{slug}\" nie je možné preradiť.", "error.page.status.invalid": "Prosím, nastavte platnú status pre stránku", @@ -163,6 +163,7 @@ "error.user.password.invalid": "Prosím, zadajte platné heslo. Dĺžka hesla musí byť aspoň 8 znakov.", "error.user.password.notSame": "Heslá nie sú rovnaké", "error.user.password.undefined": "Užívateľ nemá heslo", + "error.user.password.wrong": "Wrong password", "error.user.role.invalid": "Prosím, zadajte platnú rolu", "error.user.update.permission": "Nemáte povolenie na aktualizáciu užívateľa \"{name}\"", diff --git a/kirby/i18n/translations/sv_SE.json b/kirby/i18n/translations/sv_SE.json index 64a1a41..7e572c6 100755 --- a/kirby/i18n/translations/sv_SE.json +++ b/kirby/i18n/translations/sv_SE.json @@ -118,7 +118,7 @@ "error.page.duplicate.permission": "Du har inte behörighet att duplicera \"{slug}\"", "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.invalid": "Please enter a valid URL appendix", "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", @@ -163,6 +163,7 @@ "error.user.password.invalid": "Ange ett giltigt lösenord. Lösenordet måste vara minst 8 tecken långt.", "error.user.password.notSame": "Lösenorden matchar inte", "error.user.password.undefined": "Användaren har inget lösenord", + "error.user.password.wrong": "Wrong password", "error.user.role.invalid": "Ange en giltig roll", "error.user.update.permission": "Du har inte behörighet att uppdatera användaren \"{name}\"", @@ -232,7 +233,7 @@ "field.blocks.image.name": "Bild", "field.blocks.image.placeholder": "Välj en bild", "field.blocks.image.ratio": "Bildförhållande", - "field.blocks.image.url": "Image URL", + "field.blocks.image.url": "Bild-URL", "field.blocks.list.name": "Punktlista", "field.blocks.markdown.name": "Markdown", "field.blocks.markdown.label": "Text", diff --git a/kirby/i18n/translations/tr.json b/kirby/i18n/translations/tr.json index 8a39b04..4532166 100755 --- a/kirby/i18n/translations/tr.json +++ b/kirby/i18n/translations/tr.json @@ -118,7 +118,7 @@ "error.page.duplicate.permission": "\"{slug}\" öğesini çoğaltmanıza izin verilmiyor", "error.page.notFound": "\"{slug}\" uzantısındaki sayfa bulunamadı", "error.page.num.invalid": "Lütfen geçerli bir sıralama numarası girin. Sayılar negatif olmamalıdır.", - "error.page.slug.invalid": "Lütfen geçerli bir adres öneki girin", + "error.page.slug.invalid": "Lütfen geçerli bir URL eki girin", "error.page.slug.maxlength": "Adres uzantısı \"{length}\" karakterden az olmalıdır", "error.page.sort.permission": "\"{slug}\" sayfası sıralanamıyor", "error.page.status.invalid": "Lütfen geçerli bir sayfa durumu ayarlayın", @@ -163,6 +163,7 @@ "error.user.password.invalid": "Lütfen geçerli bir şifre giriniz. Şifreler en az 8 karakter uzunluğunda olmalıdır.", "error.user.password.notSame": "L\u00fctfen \u015fifreyi do\u011frulay\u0131n", "error.user.password.undefined": "Bu kullanıcının şifresi yok", + "error.user.password.wrong": "Yanlış şifre", "error.user.role.invalid": "Lütfen geçerli bir rol girin", "error.user.update.permission": "\"{name}\" kullanıcısını güncellemenize izin verilmiyor", @@ -286,7 +287,7 @@ "installation.issues.mbstring": "MB String eklentisi gerekli", "installation.issues.media": "/media klasörü yok yada yazılamaz", "installation.issues.php": "PHP 7+ kullandığınızdan emin olun. ", - "installation.issues.server": "Kirby Apache, Nginx or Caddy gerektirir", + "installation.issues.server": "Kirby Apache, Nginx veya Caddy gerektirir", "installation.issues.sessions": "/site/sessions klasörü mevcut değil veya yazılabilir değil", "language": "Dil", diff --git a/kirby/panel/dist/css/app.css b/kirby/panel/dist/css/app.css index 32644de..8e17c9c 100755 --- a/kirby/panel/dist/css/app.css +++ b/kirby/panel/dist/css/app.css @@ -1 +1 @@ -*,: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}.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}[data-disabled] .k-input-icon{color:#777}.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}[data-disabled] .k-checkbox-input-native:checked+.k-checkbox-input-icon{border-color:#777;background:#777}.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}[data-disabled] .k-radio-input input:checked+label:before{border-color:#777;background:#777}.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}[data-disabled] .k-range-input-native::-webkit-slider-runnable-track{background:linear-gradient(#777,#777) 0/var(--position) 100% no-repeat #ccc}[data-disabled] .k-range-input-native::-moz-range-progress{height:4px;background:#777}[data-disabled] .k-range-input-native::-ms-fill-lower{height:4px;background:#777}[data-disabled] .k-range-input-native::-webkit-slider-thumb{border:4px solid #777}[data-disabled] .k-range-input-native::-moz-range-thumb{border:4px solid #777}[data-disabled] .k-range-input-native::-ms-thumb{border:4px solid #777}[data-disabled] .k-range-input-tooltip{background:#777}[data-disabled] .k-range-input-tooltip:after{border-right:5px solid #777}.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)}[data-disabled] .k-layout{padding-right:0}.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;height: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}[data-disabled] .k-structure-table{background:#efefef}[data-disabled] .k-structure-table td,[data-disabled] .k-structure-table th{background:#efefef;border-bottom:1px solid #ccc}[dir=ltr] [data-disabled] .k-structure-table td,[dir=ltr] [data-disabled] .k-structure-table th{border-right:1px solid #ccc}[dir=rtl] [data-disabled] .k-structure-table td,[dir=rtl] [data-disabled] .k-structure-table th{border-left:1px solid #ccc}.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;flex-shrink:0;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"],.k-column[data-width="12/12"]{grid-column-start:span 12}.k-column[data-width="11/12"]{grid-column-start:span 11}.k-column[data-width="5/6"],.k-column[data-width="10/12"]{grid-column-start:span 10}.k-column[data-width="3/4"],.k-column[data-width="9/12"]{grid-column-start:span 9}.k-column[data-width="2/3"],.k-column[data-width="4/6"],.k-column[data-width="8/12"]{grid-column-start:span 8}.k-column[data-width="7/12"]{grid-column-start:span 7}.k-column[data-width="1/2"],.k-column[data-width="2/4"],.k-column[data-width="3/6"],.k-column[data-width="6/12"]{grid-column-start:span 6}.k-column[data-width="5/12"]{grid-column-start:span 5}.k-column[data-width="1/3"],.k-column[data-width="2/6"],.k-column[data-width="4/12"]{grid-column-start:span 4}.k-column[data-width="1/4"],.k-column[data-width="3/12"]{grid-column-start:span 3}.k-column[data-width="1/6"],.k-column[data-width="2/12"]{grid-column-start:span 2}.k-column[data-width="1/12"]{grid-column-start:span 1}}.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)}[data-disabled] .k-list-item{background:#efefef}.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}[data-disabled] .k-icon[data-back=black]{background-color:#777}[data-disabled] .k-icon[data-back=pattern]{background:#848484 url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXR0ZXJuIGlkPSJhIiB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHBhdHRlcm5Vbml0cz0idXNlclNwYWNlT25Vc2UiPjxwYXRoIGZpbGw9InJnYmEoMCwgMCwgMCwgMC4yKSIgZD0iTTAgMGgxMHYxMEgwem0xMCAxMGgxMHYxMEgxMHoiLz48L3BhdHRlcm4+PHJlY3QgZmlsbD0idXJsKCNhKSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIvPjwvc3ZnPg==")}[data-disabled] .k-icon[data-back=pattern] svg{opacity:1}.k-icon[data-size=medium] svg{width:2rem;height:2rem}.k-icon[data-size=large] svg{width:3rem;height:3rem}.k-icon-emoji{display:block;line-height:1;font-style:normal;font-size:1rem}@media not all,only screen and (-webkit-min-device-pixel-ratio:2),only screen and (min-resolution:2dppx),only screen and (min-resolution:192dpi){.k-icon-emoji{font-size:1.25rem}}.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 ol,.k-text ul{margin-left:1rem}.k-text li{list-style:inherit}.k-text>ol,.k-text>ul,.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}[data-disabled] .k-tag{background-color:#777}[data-disabled] .k-tag .k-tag-toggle{display:none}.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-drawer-options .k-button[data-disabled]{vertical-align:middle;display:inline-grid}[data-disabled] .k-block-container{background:#efefef}.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}[data-disabled] .k-blocks{background:#efefef}.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 +*,: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}.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}[data-disabled] .k-input-icon{color:#777}.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}[data-disabled] .k-checkbox-input-native:checked+.k-checkbox-input-icon{border-color:#777;background:#777}.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}[data-disabled] .k-radio-input input:checked+label:before{border-color:#777;background:#777}.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}[data-disabled] .k-range-input-native::-webkit-slider-runnable-track{background:linear-gradient(#777,#777) 0/var(--position) 100% no-repeat #ccc}[data-disabled] .k-range-input-native::-moz-range-progress{height:4px;background:#777}[data-disabled] .k-range-input-native::-ms-fill-lower{height:4px;background:#777}[data-disabled] .k-range-input-native::-webkit-slider-thumb{border:4px solid #777}[data-disabled] .k-range-input-native::-moz-range-thumb{border:4px solid #777}[data-disabled] .k-range-input-native::-ms-thumb{border:4px solid #777}[data-disabled] .k-range-input-tooltip{background:#777}[data-disabled] .k-range-input-tooltip:after{border-right:5px solid #777}.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)}[data-disabled] .k-layout{padding-right:0}.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;height: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}[data-disabled] .k-structure-table{background:#efefef}[data-disabled] .k-structure-table td,[data-disabled] .k-structure-table th{background:#efefef;border-bottom:1px solid #ccc}[dir=ltr] [data-disabled] .k-structure-table td,[dir=ltr] [data-disabled] .k-structure-table th{border-right:1px solid #ccc}[dir=rtl] [data-disabled] .k-structure-table td,[dir=rtl] [data-disabled] .k-structure-table th{border-left:1px solid #ccc}[data-disabled] .k-structure-table td:last-child{overflow:hidden;text-overflow:ellipsis}.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{padding:0 .75rem}.k-url-field-preview{padding:0 .75rem;overflow:hidden;text-overflow:ellipsis}.k-url-field-preview a{color:#4271ae;text-decoration:underline;transition:color .3s;white-space:nowrap;max-width:100%}.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;flex-shrink:0;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"],.k-column[data-width="12/12"]{grid-column-start:span 12}.k-column[data-width="11/12"]{grid-column-start:span 11}.k-column[data-width="5/6"],.k-column[data-width="10/12"]{grid-column-start:span 10}.k-column[data-width="3/4"],.k-column[data-width="9/12"]{grid-column-start:span 9}.k-column[data-width="2/3"],.k-column[data-width="4/6"],.k-column[data-width="8/12"]{grid-column-start:span 8}.k-column[data-width="7/12"]{grid-column-start:span 7}.k-column[data-width="1/2"],.k-column[data-width="2/4"],.k-column[data-width="3/6"],.k-column[data-width="6/12"]{grid-column-start:span 6}.k-column[data-width="5/12"]{grid-column-start:span 5}.k-column[data-width="1/3"],.k-column[data-width="2/6"],.k-column[data-width="4/12"]{grid-column-start:span 4}.k-column[data-width="1/4"],.k-column[data-width="3/12"]{grid-column-start:span 3}.k-column[data-width="1/6"],.k-column[data-width="2/12"]{grid-column-start:span 2}.k-column[data-width="1/12"]{grid-column-start:span 1}}.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)}[data-disabled] .k-list-item{background:#efefef}.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}[data-disabled] .k-icon[data-back=black]{background-color:#777}[data-disabled] .k-icon[data-back=pattern]{background:#848484 url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXR0ZXJuIGlkPSJhIiB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHBhdHRlcm5Vbml0cz0idXNlclNwYWNlT25Vc2UiPjxwYXRoIGZpbGw9InJnYmEoMCwgMCwgMCwgMC4yKSIgZD0iTTAgMGgxMHYxMEgwem0xMCAxMGgxMHYxMEgxMHoiLz48L3BhdHRlcm4+PHJlY3QgZmlsbD0idXJsKCNhKSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIvPjwvc3ZnPg==")}[data-disabled] .k-icon[data-back=pattern] svg{opacity:1}.k-icon[data-size=medium] svg{width:2rem;height:2rem}.k-icon[data-size=large] svg{width:3rem;height:3rem}.k-icon-emoji{display:block;line-height:1;font-style:normal;font-size:1rem}@media not all,only screen and (-webkit-min-device-pixel-ratio:2),only screen and (min-resolution:2dppx),only screen and (min-resolution:192dpi){.k-icon-emoji{font-size:1.25rem}}.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 ol,.k-text ul{margin-left:1rem}.k-text li{list-style:inherit}.k-text>ol,.k-text>ul,.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}[data-disabled] .k-tag{background-color:#777}[data-disabled] .k-tag .k-tag-toggle{display:none}.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-drawer-options .k-button[data-disabled]{vertical-align:middle;display:inline-grid}[data-disabled] .k-block-container{background:#efefef}.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}[data-disabled] .k-blocks{background:#efefef}.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:last-of-type{border-right:0}.k-block-options-button[aria-current]{color:#4271ae}.k-block-options-button:hover{background:#f7f7f7}.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/js/app.js b/kirby/panel/dist/js/app.js index 6abf887..cd4f7db 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,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(()=>{try{let e=this.$refs.fatal.contentWindow.document;e.open(),e.write(t),e.close()}catch(e){console.error(e)}})}},created(){this.$events.$on("offline",this.isOffline),this.$events.$on("online",this.isOnline),this.$events.$on("drop",this.drop)},destroyed(){this.$events.$off("offline",this.isOffline),this.$events.$off("online",this.isOnline),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}}),N=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)}}),M=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,...N(s),...t};return i.auth=L(i),i.files=A(i),i.languages=B(i),i.pages=D(i),i.roles=M(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"),W=s.n(G),Y=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"){let a=t.$library.dayjs.utc(e);return a.isValid()||(a=t.$library.dayjs.utc(e,"HH:mm:ss")),s?!e||!a.isValid()||(s=t.$library.dayjs.utc(s),a.isSame(s,n)||a[i](s,n)):e&&a.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:Y,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)}}}},Nt=Dt,Mt=Object(c["a"])(Nt,At,Bt,!1,null,null,null),Pt=Mt.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)},Wt=[],Yt={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=Yt,Jt=Object(c["a"])(Vt,Gt,Wt,!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"}}},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]),this.onCodeChanges(this.language.code)}},methods:{onCodeChanges(t){if(!t)return this.language.locale=null;if(t.length>=2)if(-1!==t.indexOf("-")){let e=t.split("-"),s=[e[0],e[1].toUpperCase()];this.language.locale=s.join("_")}else{let e=this.$store.state.system.info.locales||[];e&&e[t]?this.language.locale=e[t]:this.language.locale=null}},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:{onCodeChanges(){return!1},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=[],Ne={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)}}}},Me=Ne,Pe=(s("5f52"),Object(c["a"])(Me,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)}}}},We=Ge,Ye=Object(c["a"])(We,w,x,!1,null,null,null),Ve=Ye.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,Ns=Object(c["a"])(Ds,Is,As,!1,null,null,null),Ms=Ns.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)}}}},Ws=Gs,Ys=Object(c["a"])(Ws,Hs,Ks,!1,null,null,null),Vs=Ys.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()}},destroyed(){this.$store.dispatch("drawers/close",this._uid)},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(t){this.$refs.form&&"function"===typeof this.$refs.form.focus&&this.$refs.form.focus(t)},open(t,e=!0){this.$refs.drawer.open(),this.tab=t||this.firstTab.name,!1!==e&&setTimeout(()=>{let t=Object.values(this.fields).filter(t=>!0===t.autofocus)[0]||null;this.focus(t)},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,Ni=Object(c["a"])(Di,Ii,Ai,!1,null,null,null),Mi=Ni.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.toToday(),"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){const e=this.datetimes[0]||this.toToday();if("today"===t){const t=this.mergeTime(this.$library.dayjs(),e);this.datetimes=[t],this.show(t)}else{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))}}},Wi=Gi,Yi=(s("fc0f"),Object(c["a"])(Wi,Hi,Ki,!1,null,null,null)),Vi=Yi.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")}}},Nn=Dn,Mn=Object(c["a"])(Nn,An,Bn,!1,null,null,null),Pn=Mn.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=[],Wn={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)}}}},Yn=Wn,Vn=(s("5aee"),Object(c["a"])(Yn,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"}})},Na=[],Ma={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=Ma,Ra=Object(c["a"])(Pa,Da,Na,!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 Wa 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 Ya 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",!1===this.isEmpty?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 Wa,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 Ya,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.display,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: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{day:["D","DD"],month:["M","MM","MMM","MMMM"],year:["YY","YYYY"]}},parsed(){if(this.input)for(let t=0;t[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()},separator(){return this.display.match(/[\W]/)[0]},tokens(){return this.display.split(/\W/)}},watch:{value(t){this.input=this.toFormat(t),this.onInvalid()}},mounted(){this.onInvalid()},methods:{emit(t){const e=this.toFormat(this.parsed,"YYYY-MM-DD HH:mm:ss")||"";this.$emit(t,e)},focus(){this.$refs.input.focus()},manipulate(t){let e;if(this.parsed){let s=this.step.unit,i=this.step.size;if(this.selected=this.toCursorIndex(),null!==this.selected){const e=this.tokens[this.selected];"a"===e.toLowerCase()?(s="hour",i=12,t="pm"===this.parts[this.selected]?"subtract":"add"):(s=this.toUnit(e),s!==this.step.unit&&(i=1))}e=this.parsed.clone()[t](i,s)}else e=this.toNearest(this.$library.dayjs()),this.selected=this.toIndex();this.input=this.toFormat(e),this.emit("update"),this.$nextTick(()=>{this.select()})},onBlur(){this.parsed||(this.input=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,e=this.display){return t?("string"==typeof t&&(t=this.toDatetime(t)),!1===t.isValid()?null:this.toNearest(t).format(e)):null},toNearest(t,e=this.step.unit,s=this.step.size){"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));const a=this.step.unit;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)),required:!this.required||kr["required"]}}}},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=[],Nr={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?this.toDatetime(this.value).format("HH:mm:ss"):null}}},watch:{value(){this.input=this.toDatetime(this.value),this.onInvalid()}},mounted(){this.onInvalid()},methods:{emit(t,e=this.input){e?this.$emit(t,e.format("YYYY-MM-DD HH:mm:ss")):this.$emit(t,"")},focus(){this.$refs.dateInput.focus()},onUpdate(t,e){const s=this.toDatetime(this.value);e=this.toDatetime(t,e,s),this.emit("update",e)},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"time"===e&&(i=this.$library.dayjs.utc(t,"HH:mm:ss")),!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"]}}}},Mr=Nr,Pr=(s("4433"),Object(c["a"])(Mr,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,Wr={extends:Gr,props:{...Gr.props,autocomplete:{type:String,default:"email"},placeholder:{type:String,default(){return this.$t("email.placeholder")}},type:{type:String,default:"email"}}},Yr=Wr,Vr=Object(c["a"])(Yr,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",t._b({ref:"input",staticClass:"k-list-input",attrs:{extensions:t.extensions,nodes:["bulletList","orderedList"]},on:{input:t.onInput}},"k-writer",t.$props,!1))},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");if(!s)return void 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()])},No=[],Mo={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=Mo,Ro=(s("b5d2"),Object(c["a"])(Po,Do,No,!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,Wo=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)},Yo=[],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,Wo,Yo,!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,step:{type:Object,default(){return{size:5,unit:"minute"}}},type:{type:String,default:"time"}},computed:{is12HourFormat(){return this.display.toLowerCase().includes("a")},map(){return{second:["s","ss"],minute:["m","mm"],hour:this.is12HourFormat?["h","hh"]:["H","HH"]}},patterns(){let t=Ar.computed.patterns.apply(this);return this.is12HourFormat&&(t=t.map(t=>t+"a").concat(t)),t}},methods:{emit(t){const e=this.toFormat(this.parsed,"HH:mm:ss")||"";this.$emit(t,e)},toDatetime(t){return this.$library.dayjs.utc(t,"HH:mm:ss")}}},ul=cl,dl=Object(c["a"])(ul,no,ao,!1,null,null,null),pl=dl.exports,hl=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("label",{staticClass:"k-toggle-input",attrs:{"data-disabled":t.disabled}},[s("input",{ref:"input",staticClass:"k-toggle-input-native",attrs:{id:t.id,disabled:t.disabled,type:"checkbox"},domProps:{checked:t.value},on:{change:function(e){return t.onInput(e.target.checked)}}}),s("span",{staticClass:"k-toggle-input-label",domProps:{textContent:t._s(t.label)}})])},ml=[],fl={inheritAttrs:!1,props:{autofocus:Boolean,disabled:Boolean,id:[Number,String],text:{type:[Array,String],default(){return[this.$t("off"),this.$t("on")]}},required:Boolean,value:Boolean},computed:{label(){return Array.isArray(this.text)?this.value?this.text[1]:this.text[0]:this.text}},watch:{value(){this.onInvalid()}},mounted(){this.onInvalid(),this.$props.autofocus&&this.focus()},methods:{focus(){this.$refs.input.focus()},onEnter(t){"Enter"===t.key&&this.$refs.input.click()},onInput(t){this.$emit("input",t)},onInvalid(){this.$emit("invalid",this.$v.$invalid,this.$v)},select(){this.$refs.input.focus()}},validations(){return{value:{required:!this.required||kr["required"]}}}},gl=fl,kl=(s("bb41"),Object(c["a"])(gl,hl,ml,!1,null,null,null)),bl=kl.exports,vl={extends:Gr,props:{...Gr.props,autocomplete:{type:String,default:"url"},type:{type:String,default:"url"}}},$l=vl,yl=Object(c["a"])($l,ro,oo,!1,null,null,null),_l=yl.exports,wl=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-field",t._b({staticClass:"k-blocks-field"},"k-field",t.$props,!1),[t.hasFieldsets?s("k-dropdown",{attrs:{slot:"options"},slot:"options"},[s("k-button",{attrs:{icon:"dots"},on:{click:function(e){return t.$refs.options.toggle()}}}),s("k-dropdown-content",{ref:"options",attrs:{align:"right"}},[s("k-dropdown-item",{attrs:{disabled:t.isFull,icon:"add"},on:{click:function(e){return t.$refs.blocks.choose(t.value.length)}}},[t._v(" "+t._s(t.$t("add"))+" ")]),s("k-dropdown-item",{attrs:{disabled:t.isEmpty,icon:"trash"},on:{click:function(e){return t.$refs.blocks.confirmToRemoveAll()}}},[t._v(" "+t._s(t.$t("delete.all"))+" ")])],1)],1):t._e(),s("k-blocks",t._g({ref:"blocks",attrs:{compact:!1,empty:t.empty,endpoints:t.endpoints,fieldsets:t.fieldsets,"fieldset-groups":t.fieldsetGroups,group:t.group,max:t.max,value:t.value},on:{close:function(e){t.opened=e},open:function(e){t.opened=e}}},t.$listeners))],1)},xl=[],Ol={inheritAttrs:!1,props:{...$n.props,empty:String,fieldsets:Object,fieldsetGroups:Object,group:String,max:{type:Number,default:null},value:{type:Array,default(){return[]}}},data(){return{opened:[]}},computed:{hasFieldsets(){return Object.keys(this.fieldsets).length},isFull(){return!1},isEmpty(){return!1}}},Cl=Ol,Sl=(s("ae14"),Object(c["a"])(Cl,wl,xl,!1,null,null,null)),El=Sl.exports,jl=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-field",t._b({staticClass:"k-checkboxes-field",attrs:{counter:t.counterOptions}},"k-field",t.$props,!1),[s("k-input",t._g(t._b({ref:"input",attrs:{id:t._uid,theme:"field",type:"checkboxes"}},"k-input",t.$props,!1),t.$listeners))],1)},Tl=[],Ll={inheritAttrs:!1,props:{...$n.props,...In.props,...Sr.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()}}},Il=Ll,Al=Object(c["a"])(Il,jl,Tl,!1,null,null,null),Bl=Al.exports,Dl=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-field",t._b({staticClass:"k-date-field",attrs:{input:t._uid}},"k-field",t.$props,!1),[s("k-input",t._g(t._b({ref:"input",attrs:{id:t._uid,type:t.inputType,value:t.value,theme:"field"},scopedSlots:t._u([t.calendar?{key:"icon",fn:function(){return[s("k-dropdown",[s("k-button",{staticClass:"k-input-icon-button",attrs:{icon:t.icon,tooltip:t.$t("date.select"),tabindex:"-1"},on:{click:t.onFocus}}),s("k-dropdown-content",{ref:"calendar",attrs:{align:"right"}},[s("k-calendar",{attrs:{value:t.datetime,min:t.min,max:t.max},on:{input:t.onSelect}})],1)],1)]},proxy:!0}:null],null,!0)},"k-input",t.$props,!1),t.listeners))],1)},Nl=[],Ml={inheritAttrs:!1,props:{...$n.props,...In.props,...Rr.props,calendar:{type:Boolean,default:!0},icon:{type:String,default:"calendar"}},data(){return{datetime:this.value}},computed:{inputType(){return!1===this.time?"date":"datetime"},listeners(){return{...this.$listeners,enter:this.onSelect,focus:this.onFocus,input:this.onInput,update:this.onUpdate}}},watch:{value(t){this.datetime=t}},methods:{focus(){this.$refs.input.focus()},onUpdate(t){this.$emit("input",t)},onFocus(){this.$refs.calendar&&this.$refs.calendar.open()},onInput(t){this.datetime=t},onSelect(t){this.onUpdate(t),this.$refs.calendar&&this.$refs.calendar.close()}}},Pl=Ml,Rl=Object(c["a"])(Pl,Dl,Nl,!1,null,null,null),ql=Rl.exports,Fl=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-field",t._b({staticClass:"k-email-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:"email"}},"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.mailto,tooltip:t.$t("open"),tabindex:"-1",target:"_blank"},slot:"icon"}):t._e()],1)],1)},Ul=[],zl={inheritAttrs:!1,props:{...$n.props,...In.props,...Jr.props,link:{type:Boolean,default:!0},icon:{type:String,default:"email"}},computed:{mailto(){return this.value&&this.value.length>0?"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,Wl=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:"check"},on:{click:t.open}},[t._v(" "+t._s(t.$t("select"))+" ")])]],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)},Yl=[],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,Wl,Yl,!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:{disabled:t.disabled,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),t.disabled?t._e():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),t.disabled?t._e():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,disabled:Boolean,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:{disabled:Boolean,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)),Nc=Dc.exports,Mc={components:{"k-block-layouts":Nc},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=Mc,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",t._b({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)}}},"k-input",t.$props,!1))],1)},Wc=[],Yc={inheritAttrs:!1,props:{...$n.props,...In.props,marks:[Array,Boolean],value:String},methods:{focus(){this.$refs.input.focus()}}},Vc=Yc,Jc=(s("116a"),Object(c["a"])(Vc,Gc,Wc,!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=[],Nu={inheritAttrs:!1,props:{...$n.props,...In.props,...Go.props,icon:{type:String,default:"angle-down"}},methods:{focus(){this.$refs.input.focus()}}},Mu=Nu,Pu=Object(c["a"])(Mu,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)+" ")])})),t.disabled?t._e():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)})),t.disabled?t._e():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{autofocus:null,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},null===this.autofocus&&!0===s.autofocus&&(this.autofocus=e),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||this.autofocus)})},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)},Wu=[],Yu={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=Yu,Ju=Object(c["a"])(Vu,Gu,Wu,!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=[],Nd={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)})}}},Md=Nd,Pd=(s("7f6e"),Object(c["a"])(Md,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",t._b({attrs:{after:t.after,before:t.before,icon:t.icon,theme:"field"}},"k-input",t.$props,!1),[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)])])},Wd=[];const Yd=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 Yd.apply(this,["ul"])}},ol:{label:this.$t("toolbar.button.ol"),icon:"list-numbers",command(){return Yd.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,Wd,!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}}}},Np=Dp,Mp=(s("21dc"),Object(c["a"])(Np,jp,Tp,!1,null,null,null)),Pp=Mp.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=[],Wp={props:{value:Array}},Yp=Wp,Vp=(s("d0c1"),Object(c["a"])(Yp,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,Nh=(s("7dc7"),Object(c["a"])(Dh,Ih,Ah,!1,null,null,null)),Mh=Nh.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._t("options",[t.flag?s("k-button",t._b({staticClass:"k-card-options-button",on:{click:t.flag.click}},"k-button",t.flag,!1)):t.statusIcon?s("k-status-icon",t._b({staticClass:"k-card-options-button"},"k-status-icon",t.statusIcon,!1)):t._e(),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,statusIcon:Object,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}},Wh=Gh,Yh=(s("f56d"),Object(c["a"])(Wh,Hh,Kh,!1,null,null,null)),Vh=Yh.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,Nm=(s("53c5"),Object(c["a"])(Dm,Im,Am,!1,null,null,null)),Mm=Nm.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-button",t._b({staticClass:"k-list-item-status",on:{click:t.flag.click}},"k-button",t.flag,!1)):t.statusIcon?s("k-status-icon",t._b({staticClass:"k-list-item-status"},"k-status-icon",t.statusIcon,!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],statusIcon:Object},computed:{imageOptions(){return Lp(this.image)}}},Wm=Gm,Ym=(s("fa6a"),Object(c["a"])(Wm,Hm,Km,!1,null,null,null)),Vm=Ym.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)}}},Nf=Df,Mf=(s("3342"),Object(c["a"])(Nf,Af,Bf,!1,null,null,null)),Pf=Mf.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=[],Wf=(s("3cf3"),{}),Yf=Object(c["a"])(Wf,Kf,Gf,!1,null,null,null),Vf=Yf.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.text?[t._v(" "+t._s(t.text)+" ")]:t._e()],2)},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,Ng=(s("16eb"),Object(c["a"])(Dg,Ig,Ag,!1,null,null,null)),Mg=Ng.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,Wg=Object(c["a"])(Gg,zg,Hg,!1,null,null,null),Yg=Wg.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=[],Nk={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}}}},Mk=Nk,Pk=(s("a66d"),Object(c["a"])(Mk,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"))+" ")])])])])},Wk=[],Yk={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),this.$events.$on("keydown.cmd.shift.f",this.open)},destroyed(){this.$events.$off("keydown.cmd.shift.f",this.open)},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=Yk,Jk=(s("4cb2"),Object(c["a"])(Vk,Gk,Wk,!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.statusIcon={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)),Nb=Db.exports,Mb=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,Mb,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("/")}},Wb=Gb,Yb=(s("d6fc"),Object(c["a"])(Wb,zb,Hb,!1,null,null,null)),Vb=Yb.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("/"),"pending"===t.authStatus.status&&this.$store.dispatch("user/pending",t.authStatus),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,Nv=(s("310e"),Object(c["a"])(Dv,Iv,Av,!1,null,null,null)),Mv=Nv.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}}}},Wv=Gv,Yv=Object(c["a"])(Wv,Hv,Kv,!1,null,null,null),Vv=Yv.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(),s("k-button",{staticClass:"k-drawer-option",attrs:{disabled:!t.prev,icon:"angle-left"},on:{click:function(e){return e.preventDefault(),e.stopPropagation(),t.goTo(t.prev)}}}),s("k-button",{staticClass:"k-drawer-option",attrs:{disabled:!t.next,icon:"angle-right"},on:{click:function(e){return e.preventDefault(),e.stopPropagation(),t.goTo(t.next)}}})]},proxy:!0}],null,!1,235757119)}),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,next:Object,prev:Object,type:String},data(){return{skipFocus:!1}},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:{close(){this.$refs.drawer.close()},confirmToRemove(){this.$refs.removeDialog.open()},focus(){!0!==this.skipFocus&&("function"===typeof this.$refs.editor.focus?this.$refs.editor.focus():this.$refs.container.focus())},goTo(t){t&&(this.skipFocus=!0,this.close(),this.$nextTick(()=>{t.$refs.container.focus(),t.open(),this.skipFocus=!1}))},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),next:t.prevNext(i+1),prev:t.prevNext(i-1)},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()},prevNext(t){if(this.blocks[t]){let e=this.blocks[t];if(this.$refs["block-"+e.id])return this.$refs["block-"+e.id][0]}},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$,N$=(s("f6c2"),Object(c["a"])(D$,I$,A$,!1,null,null,null)),M$=N$.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),W$=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",M$),I["a"].component("k-block-title",z$),I["a"].component("k-block-type",W$);const Y$=s("9711");Y$.keys().map(t=>{const e=t.match(/\w+/)[0],s=e.toLowerCase();let i=Y$(t).default;i.extends=W$,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",Ms),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",Mi),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",Mh),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",Mm),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",Mg),I["a"].component("k-button-group",Ug),I["a"].component("k-button-link",Yg),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",Nb),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",Mv),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=>Y(e.model(t).originals),values:(t,e)=>t=>({...e.originals(t),...e.changes(t)}),changes:(t,e)=>t=>Y(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=Y(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=Y(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:Y(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:t=>({id:!!ry.state.user.current&&ry.state.user.current.id,tab:t.hash.slice(1)||"main"})},{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(W.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 +(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(()=>{try{let e=this.$refs.fatal.contentWindow.document;e.open(),e.write(t),e.close()}catch(e){console.error(e)}})}},created(){this.$events.$on("offline",this.isOffline),this.$events.$on("online",this.isOnline),this.$events.$on("drop",this.drop)},destroyed(){this.$events.$off("offline",this.isOffline),this.$events.$off("online",this.isOnline),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},H={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)}},z={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"),W=s.n(G),Y=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"){let a=t.$library.dayjs.utc(e);return a.isValid()||(a=t.$library.dayjs.utc(e,"HH:mm:ss")),s?!e||!a.isValid()||(s=t.$library.dayjs.utc(s),a.isSame(s,n)||a[i](s,n)):e&&a.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:Y,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]},Ht=Ut,zt=(s("bf53"),Object(c["a"])(Ht,Rt,qt,!1,null,null,null)),Kt=zt.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)},Wt=[],Yt={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=Yt,Jt=Object(c["a"])(Vt,Gt,Wt,!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"}}},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]),this.onCodeChanges(this.language.code)}},methods:{onCodeChanges(t){if(!t)return this.language.locale=null;if(t.length>=2)if(-1!==t.indexOf("-")){let e=t.split("-"),s=[e[0],e[1].toUpperCase()];this.language.locale=s.join("_")}else{let e=this.$store.state.system.info.locales||[];e&&e[t]?this.language.locale=e[t]:this.language.locale=null}},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:{onCodeChanges(){return!1},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)}}}},He=Ue,ze=Object(c["a"])(He,qe,Fe,!1,null,null,null),Ke=ze.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)}}}},We=Ge,Ye=Object(c["a"])(We,w,x,!1,null,null,null),Ve=Ye.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),Hs=Us.exports,zs=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)}}}},Ws=Gs,Ys=Object(c["a"])(Ws,zs,Ks,!1,null,null,null),Vs=Ys.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()}},destroyed(){this.$store.dispatch("drawers/close",this._uid)},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(t){this.$refs.form&&"function"===typeof this.$refs.form.focus&&this.$refs.form.focus(t)},open(t,e=!0){this.$refs.drawer.open(),this.tab=t||this.firstTab.name,!1!==e&&setTimeout(()=>{let t=Object.values(this.fields).filter(t=>!0===t.autofocus)[0]||null;this.focus(t)},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.$emit("select",t),this.$refs.dropdown.close()},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.toToday(),"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){const e=this.datetimes[0]||this.toToday();if("today"===t){const t=this.mergeTime(this.$library.dayjs(),e);this.datetimes=[t],this.show(t)}else{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)}const s=this.multiple?this.datetimes.map(t=>this.toISO(t)):this.toISO(this.datetimes[0]);this.$emit("input",s)},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)),Hi=Ui.exports,zi=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))}}},Wi=Gi,Yi=(s("fc0f"),Object(c["a"])(Wi,zi,Ki,!1,null,null,null)),Vi=Yi.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,Hn=(s("e1f3"),Object(c["a"])(Un,Rn,qn,!1,null,null,null)),zn=Hn.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=[],Wn={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)}}}},Yn=Wn,Vn=(s("5aee"),Object(c["a"])(Yn,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 Ha 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 za 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"),title:t.getAttribute("title")})}],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 Wa 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 Ya 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,this.toolbar.visible&&this.$nextTick(()=>{this.onToolbarOpen()})},update:()=>{this.html=this.editor.getHTML(),this.isEmpty=this.editor.isEmpty(),this.$emit("input",!1===this.isEmpty?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 Ha,italic:new za,strike:new Ga,underline:new Wa,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 Ya,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()},onToolbarOpen(){if(this.$refs.toolbar){const t=this.$el.clientWidth,e=this.$refs.toolbar.$el.clientWidth;let s=this.toolbar.position.left;s-e/2<0&&(s=s+(e/2-s)-20),s+e/2>t&&(s=s-(s+e/2-t)+20),s!==this.toolbar.position.left&&(this.$refs.toolbar.$el.style.left=s+"px")}}}},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:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},id:[Number,String],label:String,required:{type:Boolean,default:!1},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.display,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: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{day:["D","DD"],month:["M","MM","MMM","MMMM"],year:["YY","YYYY"]}},parsed(){if(this.input)for(let t=0;t[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()},separator(){return this.display.match(/[\W]/)[0]},tokens(){return this.display.split(/\W/)}},watch:{value(t){this.input=this.toFormat(t),this.onInvalid()}},mounted(){this.onInvalid()},methods:{emit(t){const e=this.toFormat(this.parsed,"YYYY-MM-DD HH:mm:ss")||"";this.$emit(t,e)},focus(){this.$refs.input.focus()},manipulate(t){let e;if(this.parsed){let s=this.step.unit,i=this.step.size;if(this.selected=this.toCursorIndex(),null!==this.selected){const e=this.tokens[this.selected];"a"===e.toLowerCase()?(s="hour",i=12,t="pm"===this.parts[this.selected]?"subtract":"add"):(s=this.toUnit(e),s!==this.step.unit&&(i=1))}e=this.parsed.clone()[t](i,s)}else e=this.toNearest(this.$library.dayjs()),this.selected=this.toIndex();this.input=this.toFormat(e),this.emit("update"),this.$nextTick(()=>{this.select()})},onBlur(){this.parsed||(this.input=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,e=this.display){return t?("string"==typeof t&&(t=this.toDatetime(t)),!1===t.isValid()?null:this.toNearest(t).format(e)):null},toNearest(t,e=this.step.unit,s=this.step.size){"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));const a=this.step.unit;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)),required:!this.required||kr["required"]}}}},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?this.toDatetime(this.value).format("HH:mm:ss"):null}}},watch:{value(){this.input=this.toDatetime(this.value),this.onInvalid()}},mounted(){this.onInvalid()},methods:{emit(t,e=this.input){e?this.$emit(t,e.format("YYYY-MM-DD HH:mm:ss")):this.$emit(t,"")},focus(){this.$refs.dateInput.focus()},onUpdate(t,e){const s=this.toDatetime(this.value);e=this.toDatetime(t,e,s),this.emit("update",e)},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"time"===e&&(i=this.$library.dayjs.utc(t,"HH:mm:ss")),!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},Hr={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}}}},zr=Hr,Kr=(s("cb8f"),Object(c["a"])(zr,qr,Fr,!1,null,null,null)),Gr=Kr.exports,Wr={extends:Gr,props:{...Gr.props,autocomplete:{type:String,default:"email"},placeholder:{type:String,default(){return this.$t("email.placeholder")}},type:{type:String,default:"email"}}},Yr=Wr,Vr=Object(c["a"])(Yr,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",t._b({ref:"input",staticClass:"k-list-input",attrs:{extensions:t.extensions,nodes:["bulletList","orderedList"]},on:{input:t.onInput},model:{value:t.list,callback:function(e){t.list=e},expression:"list"}},"k-writer",t.$props,!1))},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},data(){return{list:this.value}},computed:{extensions(){return[new Qr({inline:!0})]}},methods:{focus(){this.$refs.input.focus()},onInput(t){let e=(new DOMParser).parseFromString(t,"text/html"),s=e.querySelector("ul, ol");if(!s)return void this.$emit("input",this.list="");let i=s.textContent.trim();0!==i.length?(this.list=t,this.$emit("input",t.replace(/(

|<\/p>)/gi,""))):this.$emit("input",this.list="")}}},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=[],Ho={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"]}}}},zo=Ho,Ko=(s("6a18"),Object(c["a"])(zo,Fo,Uo,!1,null,null,null)),Go=Ko.exports,Wo=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)},Yo=[],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,Wo,Yo,!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,step:{type:Object,default(){return{size:5,unit:"minute"}}},type:{type:String,default:"time"}},computed:{is12HourFormat(){return this.display.toLowerCase().includes("a")},map(){return{second:["s","ss"],minute:["m","mm"],hour:this.is12HourFormat?["h","hh"]:["H","HH"]}},patterns(){let t=Ar.computed.patterns.apply(this);return this.is12HourFormat&&(t=t.map(t=>t+"a").concat(t)),t}},methods:{emit(t){const e=this.toFormat(this.parsed,"HH:mm:ss")||"";this.$emit(t,e)},toDatetime(t){return this.$library.dayjs.utc(t,"HH:mm:ss")}}},ul=cl,dl=Object(c["a"])(ul,no,ao,!1,null,null,null),pl=dl.exports,hl=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("label",{staticClass:"k-toggle-input",attrs:{"data-disabled":t.disabled}},[s("input",{ref:"input",staticClass:"k-toggle-input-native",attrs:{id:t.id,disabled:t.disabled,type:"checkbox"},domProps:{checked:t.value},on:{change:function(e){return t.onInput(e.target.checked)}}}),s("span",{staticClass:"k-toggle-input-label",domProps:{textContent:t._s(t.label)}})])},ml=[],fl={inheritAttrs:!1,props:{autofocus:Boolean,disabled:Boolean,id:[Number,String],text:{type:[Array,String],default(){return[this.$t("off"),this.$t("on")]}},required:Boolean,value:Boolean},computed:{label(){return Array.isArray(this.text)?this.value?this.text[1]:this.text[0]:this.text}},watch:{value(){this.onInvalid()}},mounted(){this.onInvalid(),this.$props.autofocus&&this.focus()},methods:{focus(){this.$refs.input.focus()},onEnter(t){"Enter"===t.key&&this.$refs.input.click()},onInput(t){this.$emit("input",t)},onInvalid(){this.$emit("invalid",this.$v.$invalid,this.$v)},select(){this.$refs.input.focus()}},validations(){return{value:{required:!this.required||kr["required"]}}}},gl=fl,kl=(s("bb41"),Object(c["a"])(gl,hl,ml,!1,null,null,null)),bl=kl.exports,vl={extends:Gr,props:{...Gr.props,autocomplete:{type:String,default:"url"},type:{type:String,default:"url"}}},$l=vl,yl=Object(c["a"])($l,ro,oo,!1,null,null,null),_l=yl.exports,wl=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-field",t._b({staticClass:"k-blocks-field"},"k-field",t.$props,!1),[t.hasFieldsets?s("k-dropdown",{attrs:{slot:"options"},slot:"options"},[s("k-button",{attrs:{icon:"dots"},on:{click:function(e){return t.$refs.options.toggle()}}}),s("k-dropdown-content",{ref:"options",attrs:{align:"right"}},[s("k-dropdown-item",{attrs:{disabled:t.isFull,icon:"add"},on:{click:function(e){return t.$refs.blocks.choose(t.value.length)}}},[t._v(" "+t._s(t.$t("add"))+" ")]),s("k-dropdown-item",{attrs:{disabled:t.isEmpty,icon:"trash"},on:{click:function(e){return t.$refs.blocks.confirmToRemoveAll()}}},[t._v(" "+t._s(t.$t("delete.all"))+" ")])],1)],1):t._e(),s("k-blocks",t._g({ref:"blocks",attrs:{compact:!1,empty:t.empty,endpoints:t.endpoints,fieldsets:t.fieldsets,"fieldset-groups":t.fieldsetGroups,group:t.group,max:t.max,value:t.value},on:{close:function(e){t.opened=e},open:function(e){t.opened=e}}},t.$listeners))],1)},xl=[],Ol={inheritAttrs:!1,props:{...$n.props,empty:String,fieldsets:Object,fieldsetGroups:Object,group:String,max:{type:Number,default:null},value:{type:Array,default(){return[]}}},data(){return{opened:[]}},computed:{hasFieldsets(){return Object.keys(this.fieldsets).length},isEmpty(){return 0===this.value.length},isFull(){return null!==this.max&&this.value.length>=this.max}}},Cl=Ol,Sl=(s("ae14"),Object(c["a"])(Cl,wl,xl,!1,null,null,null)),El=Sl.exports,jl=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-field",t._b({staticClass:"k-checkboxes-field",attrs:{counter:t.counterOptions}},"k-field",t.$props,!1),[s("k-input",t._g(t._b({ref:"input",attrs:{id:t._uid,theme:"field",type:"checkboxes"}},"k-input",t.$props,!1),t.$listeners))],1)},Tl=[],Ll={inheritAttrs:!1,props:{...$n.props,...In.props,...Sr.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()}}},Il=Ll,Al=Object(c["a"])(Il,jl,Tl,!1,null,null,null),Bl=Al.exports,Dl=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-field",t._b({staticClass:"k-date-field",attrs:{input:t._uid}},"k-field",t.$props,!1),[s("k-input",t._g(t._b({ref:"input",attrs:{id:t._uid,type:t.inputType,value:t.value,theme:"field"},scopedSlots:t._u([t.calendar?{key:"icon",fn:function(){return[s("k-dropdown",[s("k-button",{staticClass:"k-input-icon-button",attrs:{icon:t.icon,tooltip:t.$t("date.select"),tabindex:"-1"},on:{click:t.onFocus}}),s("k-dropdown-content",{ref:"calendar",attrs:{align:"right"}},[s("k-calendar",{attrs:{value:t.datetime,min:t.min,max:t.max},on:{input:t.onSelect}})],1)],1)]},proxy:!0}:null],null,!0)},"k-input",t.$props,!1),t.listeners))],1)},Ml=[],Nl={inheritAttrs:!1,props:{...$n.props,...In.props,...Rr.props,calendar:{type:Boolean,default:!0},icon:{type:String,default:"calendar"}},data(){return{datetime:this.value}},computed:{inputType(){return!1===this.time?"date":"datetime"},listeners(){return{...this.$listeners,enter:this.onSelect,focus:this.onFocus,input:this.onInput,update:this.onUpdate}}},watch:{value(t){this.datetime=t}},methods:{focus(){this.$refs.input.focus()},onUpdate(t){this.$emit("input",t)},onFocus(){this.$refs.calendar&&this.$refs.calendar.open()},onInput(t){this.datetime=t},onSelect(t){this.onUpdate(t),this.$refs.calendar&&this.$refs.calendar.close()}}},Pl=Nl,Rl=Object(c["a"])(Pl,Dl,Ml,!1,null,null,null),ql=Rl.exports,Fl=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-field",t._b({staticClass:"k-email-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:"email"}},"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.mailto,tooltip:t.$t("open"),tabindex:"-1",target:"_blank"},slot:"icon"}):t._e()],1)],1)},Ul=[],Hl={inheritAttrs:!1,props:{...$n.props,...In.props,...Jr.props,link:{type:Boolean,default:!0},icon:{type:String,default:"email"}},computed:{mailto(){return this.value&&this.value.length>0?"mailto:"+this.value:null}},methods:{focus(){this.$refs.input.focus()}}},zl=Hl,Kl=Object(c["a"])(zl,Fl,Ul,!1,null,null,null),Gl=Kl.exports,Wl=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:"check"},on:{click:t.open}},[t._v(" "+t._s(t.$t("select"))+" ")])]],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)},Yl=[],Vl={inheritAttrs:!1,props:{...$n.props,empty:String,info:String,link:Boolean,layout:{type:String,default:"list"},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){if(t.stopPropagation(),this.disabled)return!1;this.more&&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,Wl,Yl,!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:{disabled:t.disabled,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),t.disabled?t._e():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),t.disabled?t._e():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,disabled:Boolean,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:{disabled:Boolean,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=[],Hc={},zc=Hc,Kc=(s("718c"),Object(c["a"])(zc,Fc,Uc,!1,null,null,null)),Gc=Kc.exports,Wc=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",t._b({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)}}},"k-input",t.$props,!1))],1)},Yc=[],Vc={inheritAttrs:!1,props:{...$n.props,...In.props,marks:[Array,Boolean],value:String},methods:{focus(){this.$refs.input.focus()}}},Jc=Vc,Zc=(s("116a"),Object(c["a"])(Jc,Wc,Yc,!1,null,null,null)),Xc=Zc.exports,Qc=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)},tu=[],eu={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()}}},su=eu,iu=Object(c["a"])(su,Qc,tu,!1,null,null,null),nu=iu.exports,au=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)},ru=[],ou={inheritAttrs:!1,props:{...$n.props,...In.props,...xo.props},methods:{focus(){this.$refs.input.focus()}}},lu=ou,cu=Object(c["a"])(lu,au,ru,!1,null,null,null),uu=cu.exports,du=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)},pu=[],hu={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)})}}},mu=hu,fu=(s("7e85"),Object(c["a"])(mu,du,pu,!1,null,null,null)),gu=fu.exports,ku=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)},bu=[],vu={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()}}},$u=vu,yu=Object(c["a"])($u,ku,bu,!1,null,null,null),_u=yu.exports,wu=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)},xu=[],Ou={inheritAttrs:!1,props:{...$n.props,...In.props,...Bo.props},methods:{focus(){this.$refs.input.focus()}}},Cu=Ou,Su=Object(c["a"])(Cu,wu,xu,!1,null,null,null),Eu=Su.exports,ju=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)},Tu=[],Lu={inheritAttrs:!1,props:{...$n.props,...In.props,...qo.props},methods:{focus(){this.$refs.input.focus()}}},Iu=Lu,Au=Object(c["a"])(Iu,ju,Tu,!1,null,null,null),Bu=Au.exports,Du=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)},Mu=[],Nu={inheritAttrs:!1,props:{...$n.props,...In.props,...Go.props,icon:{type:String,default:"angle-down"}},methods:{focus(){this.$refs.input.focus()}}},Pu=Nu,Ru=Object(c["a"])(Pu,Du,Mu,!1,null,null,null),qu=Ru.exports,Fu=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)+" ")])})),t.disabled?t._e():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)})),t.disabled?t._e():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)},Uu=[],Hu={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{autofocus:null,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},null===this.autofocus&&!0===s.autofocus&&(this.autofocus=e),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||this.autofocus)})},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=Hu,Ku=(s("088c"),Object(c["a"])(zu,Fu,Uu,!1,null,null,null)),Gu=Ku.exports,Wu=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=[],Vu={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()}}},Ju=Vu,Zu=Object(c["a"])(Ju,Wu,Yu,!1,null,null,null),Xu=Zu.exports,Qu=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)},td=[],ed={inheritAttrs:!1,props:{...$n.props,...In.props,...sl.props,icon:{type:String,default:"phone"}},methods:{focus(){this.$refs.input.focus()}}},sd=ed,id=Object(c["a"])(sd,Qu,td,!1,null,null,null),nd=id.exports,ad=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)},rd=[],od={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()}}},ld=od,cd=(s("b746"),Object(c["a"])(ld,ad,rd,!1,null,null,null)),ud=cd.exports,dd=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)},pd=[],hd={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()}}},md=hd,fd=Object(c["a"])(md,dd,pd,!1,null,null,null),gd=fd.exports,kd=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)},bd=[],vd={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()}}},$d=vd,yd=Object(c["a"])($d,kd,bd,!1,null,null,null),_d=yd.exports,wd=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)},xd=[],Od={inheritAttrs:!1,props:{...$n.props,...In.props,...bl.props},methods:{focus(){this.$refs.input.focus()}}},Cd=Od,Sd=Object(c["a"])(Cd,wd,xd,!1,null,null,null),Ed=Sd.exports,jd=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)},Td=[],Ld={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()}}},Id=Ld,Ad=Object(c["a"])(Id,jd,Td,!1,null,null,null),Bd=Ad.exports,Dd=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)},Md=[],Nd={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)})}}},Pd=Nd,Rd=(s("7f6e"),Object(c["a"])(Pd,Dd,Md,!1,null,null,null)),qd=Rd.exports,Fd=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",t._b({attrs:{after:t.after,before:t.before,icon:t.icon,theme:"field"}},"k-input",t.$props,!1),[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)},Ud=[],Hd={inheritAttrs:!1,props:{...$n.props,...In.props,...mr.props},methods:{focus(){this.$refs.input.focus()}}},zd=Hd,Kd=(s("1267"),Object(c["a"])(zd,Fd,Ud,!1,null,null,null)),Gd=Kd.exports,Wd=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 Vd=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 Jd,Zd,Xd={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 Vd.apply(this,["ul"])}},ol:{label:this.$t("toolbar.button.ol"),icon:"list-numbers",command(){return Vd.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)}}}},Qd=Xd,tp=(s("df0d"),Object(c["a"])(Qd,Wd,Yd,!1,null,null,null)),ep=tp.exports,sp=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)},ip=[],np={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()}}},ap=np,rp=Object(c["a"])(ap,sp,ip,!1,null,null,null),op=rp.exports,lp=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)},cp=[],up={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()}}},dp=up,pp=Object(c["a"])(dp,lp,cp,!1,null,null,null),hp=pp.exports,mp=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)+" ")])])},fp=[],gp={props:{field:Object,value:String},computed:{text(){const t=Ar.methods.toDatetime.call(this,this.value);return t.format(this.field.display)}}},kp=gp,bp=(s("96a5"),Object(c["a"])(kp,mp,fp,!1,null,null,null)),vp=bp.exports,$p=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)},yp=[],_p={props:{column:{type:Object,default(){return{}}},value:String},computed:{link(){return this.value}}},wp=_p,xp=(s("977f"),Object(c["a"])(wp,$p,yp,!1,null,null,null)),Op=xp.exports,Cp={extends:Op,computed:{link(){return this.value&&this.value.length>0?"mailto:"+this.value:null}}},Sp=Cp,Ep=Object(c["a"])(Sp,Jd,Zd,!1,null,null,null),jp=Ep.exports,Tp=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()},Lp=[],Ip=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=Ap(s)),a};function Ap(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 Bp,Dp,Mp={props:{value:Array,field:Object},methods:{imageOptions(t){const e=Ip(t.image);return e.src?{...e,back:"pattern",cover:!1,...this.field.image||{}}:{src:t.url}}}},Np=Mp,Pp=(s("21dc"),Object(c["a"])(Np,Tp,Lp,!1,null,null,null)),Rp=Pp.exports,qp=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)}})},Fp=[],Up={inheritAttrs:!1,props:{value:String}},Hp=Up,zp=(s("200d"),Object(c["a"])(Hp,qp,Fp,!1,null,null,null)),Kp=zp.exports,Gp=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()},Wp=[],Yp={props:{value:Array}},Vp=Yp,Jp=(s("d0c1"),Object(c["a"])(Vp,Gp,Wp,!1,null,null,null)),Zp=Jp.exports,Xp=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)+" ")])])},Qp=[],th={props:{field:Object,value:String},computed:{text(){const t=pl.methods.toDatetime.call(this,this.value);return t.format(this.field.display)}}},eh=th,sh=(s("f9aa"),Object(c["a"])(eh,Xp,Qp,!1,null,null,null)),ih=sh.exports,nh=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"}})},ah=[],rh={props:{field:Object,value:Boolean,column:Object},computed:{text(){return!1!==this.column.text?this.field.text:null}}},oh=rh,lh=(s("1c4e"),Object(c["a"])(oh,nh,ah,!1,null,null,null)),ch=lh.exports,uh=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()},dh=[],ph={props:{value:Array}},hh=ph,mh=(s("3a85"),Object(c["a"])(hh,uh,dh,!1,null,null,null)),fh=mh.exports,gh=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)}})},kh=[],bh={inheritAttrs:!1,props:{value:String}},vh=bh,$h=(s("5e9a"),Object(c["a"])(vh,gh,kh,!1,null,null,null)),yh=$h.exports,_h=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)},wh=[],xh={props:{cover:Boolean,ratio:String},computed:{ratioPadding(){return this.$helper.ratio(this.ratio)}}},Oh=xh,Ch=(s("8d8b"),Object(c["a"])(Oh,_h,wh,!1,null,null,null)),Sh=Ch.exports,Eh=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()])},jh=[],Th={},Lh=Th,Ih=(s("6f7b"),Object(c["a"])(Lh,Eh,jh,!1,null,null,null)),Ah=Ih.exports,Bh=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)},Dh=[],Mh={props:{theme:{type:String,default:"none"},text:String}},Nh=Mh,Ph=(s("7dc7"),Object(c["a"])(Nh,Bh,Dh,!1,null,null,null)),Rh=Ph.exports,qh=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._t("options",[t.flag?s("k-button",t._b({staticClass:"k-card-options-button",on:{click:t.flag.click}},"k-button",t.flag,!1)):t.statusIcon?s("k-status-icon",t._b({staticClass:"k-card-options-button"},"k-status-icon",t.statusIcon,!1)):t._e(),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)},Fh=[],Uh={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,statusIcon:Object,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 Ip(this.image,"cards",this.column)}}},Hh=Uh,zh=(s("c119"),Object(c["a"])(Hh,qh,Fh,!1,null,null,null)),Kh=zh.exports,Gh=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)},Wh=[],Yh={props:{cards:Array}},Vh=Yh,Jh=(s("f56d"),Object(c["a"])(Vh,Gh,Wh,!1,null,null,null)),Zh=Jh.exports,Xh=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)},Qh=[],tm={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})}}},em=tm,sm=(s("8c28"),Object(c["a"])(em,Xh,Qh,!1,null,null,null)),im=sm.exports,nm=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)])},am=[],rm={props:{width:String,sticky:Boolean}},om=rm,lm=(s("c9cb"),Object(c["a"])(om,nm,am,!1,null,null,null)),cm=lm.exports,um=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)},dm=[],pm={props:{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)}}},hm=pm,mm=(s("414d"),Object(c["a"])(hm,um,dm,!1,null,null,null)),fm=mm.exports,gm=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)},km=[],bm={props:{text:String,icon:String,layout:{type:String,default:"list"}},computed:{element(){return void 0!==this.$listeners["click"]?"button":"div"}}},vm=bm,$m=(s("ba8f"),Object(c["a"])(vm,gm,km,!1,null,null,null)),ym=$m.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)},wm=[],xm={props:{file:Object}},Om=xm,Cm=(s("696b"),Object(c["a"])(Om,_m,wm,!1,null,null,null)),Sm=Cm.exports,Em=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)},jm=[],Tm={props:{gutter:String}},Lm=Tm,Im=(s("5b23"),Object(c["a"])(Lm,Em,jm,!1,null,null,null)),Am=Im.exports,Bm=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)},Dm=[],Mm={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})}}},Nm=Mm,Pm=(s("53c5"),Object(c["a"])(Nm,Bm,Dm,!1,null,null,null)),Rm=Pm.exports,qm=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)},Fm=[],Um={props:{items:Array}},Hm=Um,zm=(s("c857"),Object(c["a"])(Hm,qm,Fm,!1,null,null,null)),Km=zm.exports,Gm=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._t("image",[t.imageOptions?s("k-image",t._b({},"k-image",t.imageOptions,!1)):s("k-icon",t._b({},"k-icon",t.icon,!1))])],2):t._e(),s("span",{staticClass:"k-list-item-text"},[t._t("default",[s("em",{domProps:{innerHTML:t._s(t.text)}}),t.info?s("small",{domProps:{innerHTML:t._s(t.info)}}):t._e()])],2)]),s("nav",{staticClass:"k-list-item-options"},[t._t("options",[t.flag?s("k-button",t._b({staticClass:"k-list-item-status",on:{click:t.flag.click}},"k-button",t.flag,!1)):t.statusIcon?s("k-status-icon",t._b({staticClass:"k-list-item-status"},"k-status-icon",t.statusIcon,!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)},Wm=[],Ym={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],statusIcon:Object},computed:{imageOptions(){return Ip(this.image)}}},Vm=Ym,Jm=(s("fa6a"),Object(c["a"])(Vm,Gm,Wm,!1,null,null,null)),Zm=Jm.exports,Xm=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()},Qm=[],tf={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}}},ef=tf,sf=(s("f7f5"),Object(c["a"])(ef,Xm,Qm,!1,null,null,null)),nf=sf.exports,af=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()},rf=[],of={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"}}}}},lf=of,cf=(s("8f7d"),Object(c["a"])(lf,af,rf,!1,null,null,null)),uf=cf.exports,df=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)},pf=[],hf={props:{align:String}},mf=hf,ff=(s("daa8"),Object(c["a"])(mf,df,pf,!1,null,null,null)),gf=ff.exports,kf=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)},bf=[],vf=s("b76a"),$f=s.n(vf),yf={components:{draggable:$f.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=yf,wf=Object(c["a"])(_f,kf,bf,!1,null,null,null),xf=wf.exports,Of={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]}},Cf=Of,Sf=Object(c["a"])(Cf,Bp,Dp,!1,null,null,null),Ef=Sf.exports,jf=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)},Tf=[],Lf={props:{link:String,size:{type:String},tag:{type:String,default:"h2"},theme:{type:String}}},If=Lf,Af=(s("f8a7"),Object(c["a"])(If,jf,Tf,!1,null,null,null)),Bf=Af.exports,Df=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}})])])},Mf=[],Nf={props:{alt:String,color:String,back:String,size:String,type:String},computed:{isEmoji(){return this.$helper.string.hasEmoji(this.type)}}},Pf=Nf,Rf=(s("3342"),Object(c["a"])(Pf,Df,Mf,!1,null,null,null)),qf=Rf.exports,Ff=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)])},Uf=[],Hf={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}},zf=Hf,Kf=(s("0d56"),Object(c["a"])(zf,Ff,Uf,!1,null,null,null)),Gf=Kf.exports,Wf=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("k-icon",{staticClass:"k-loader",attrs:{type:"loader"}})},Yf=[],Vf=(s("3cf3"),{}),Jf=Object(c["a"])(Vf,Wf,Yf,!1,null,null,null),Zf=Jf.exports,Xf=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)+"% ")])},Qf=[],tg={props:{value:{type:Number,default:0}},data(){return{state:this.value}},methods:{set(t){this.state=t}}},eg=tg,sg=(s("9799"),Object(c["a"])(eg,Xf,Qf,!1,null,null,null)),ig=sg.exports,ng=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"}})},ag=[],rg={props:{icon:{type:String,default:"sort"}}},og=rg,lg=(s("35cb"),Object(c["a"])(og,ng,ag,!1,null,null,null)),cg=lg.exports,ug=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.text?[t._v(" "+t._s(t.text)+" ")]:t._e()],2)},dg=[],pg={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")}}},hg=pg,mg=(s("dd70"),Object(c["a"])(hg,ug,dg,!1,null,null,null)),fg=mg.exports,gg=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)},kg=[],bg={props:{align:String,size:String,theme:String}},vg=bg,$g=(s("b0d6"),Object(c["a"])(vg,gg,kg,!1,null,null,null)),yg=$g.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)},wg=[],xg={props:{user:[Object,String]}},Og=xg,Cg=(s("217b"),Object(c["a"])(Og,_g,wg,!1,null,null,null)),Sg=Cg.exports,Eg=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)},jg=[],Tg={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()}}},Lg=Tg,Ig=(s("3787"),Object(c["a"])(Lg,Eg,jg,!1,null,null,null)),Ag=Ig.exports,Bg=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)},Dg=[],Mg={inheritAttrs:!1,props:{icon:String,id:[String,Number],responsive:Boolean,theme:String,tooltip:String}},Ng=Mg,Pg=(s("16eb"),Object(c["a"])(Ng,Bg,Dg,!1,null,null,null)),Rg=Pg.exports,qg=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",{staticClass:"k-button-group"},[t._t("default")],2)},Fg=[],Ug={},Hg=Ug,zg=(s("a567"),Object(c["a"])(Hg,qg,Fg,!1,null,null,null)),Kg=zg.exports,Gg=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)},Wg=[],Yg={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}},Vg=Yg,Jg=Object(c["a"])(Vg,Gg,Wg,!1,null,null,null),Zg=Jg.exports,Xg=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)},Qg=[],tk={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")}}},ek={mixins:[tk],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"}}},sk=ek,ik=Object(c["a"])(sk,Xg,Qg,!1,null,null,null),nk=ik.exports,ak=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)},rk=[],ok={},lk=ok,ck=(s("f95f"),Object(c["a"])(lk,ak,rk,!1,null,null,null)),uk=ck.exports,dk=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()},pk=[];let hk=null;var mk,fk,gk={props:{options:[Array,Function],align:{type:String,default:"left"}},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(),hk&&hk!==this&&hk.close(),this.fetchOptions(t=>{this.$events.$on("keydown",this.navigate),this.$events.$on("click",this.close),this.items=t,this.isOpen=!0,hk=this,this.$emit("open")})},reset(){this.current=-1,this.$events.$off("keydown",this.navigate),this.$events.$off("click",this.close)},close(){this.reset(),this.isOpen=hk=!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}}}},kk=gk,bk=(s("98a1"),Object(c["a"])(kk,dk,pk,!1,null,null,null)),vk=bk.exports,$k=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)},yk=[],_k={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()}}},wk=_k,xk=(s("580a"),Object(c["a"])(wk,$k,yk,!1,null,null,null)),Ok=xk.exports,Ck=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)},Sk=[],Ek={mixins:[tk],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)}}},jk=Ek,Tk=(s("cc79"),Object(c["a"])(jk,Ck,Sk,!1,null,null,null)),Lk=Tk.exports,Ik=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()},Ak=[],Bk={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)}}},Dk=Bk,Mk=Object(c["a"])(Dk,Ik,Ak,!1,null,null,null),Nk=Mk.exports,Pk=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()},Rk=[],qk={props:{align:{type:String,default:"left"},details:{type:Boolean,default:!1},dropdown:{type:Boolean,default:!0},keys:{type:Boolean,default:!1},limit:{type:Number,default:10},page:{type:Number,default:1},pageLabel:{type:String,default(){return this.$t("pagination.page")}},total:{type:Number,default:0},prevLabel:{type:String,default(){return this.$t("prev")}},nextLabel:{type:String,default(){return this.$t("next")}},validate:{type:Function,default(){return Promise.resolve()}}},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}}}},Fk=qk,Uk=(s("a66d"),Object(c["a"])(Fk,Pk,Rk,!1,null,null,null)),Hk=Uk.exports,zk=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)},Kk=[],Gk={props:{prev:{type:[Boolean,Object],default:!1},next:{type:[Boolean,Object],default:!1}},methods:{button(t){return t||{disabled:!0,link:"#"}}}},Wk=Gk,Yk=(s("7a7d"),Object(c["a"])(Wk,zk,Kk,!1,null,null,null)),Vk=Yk.exports,Jk=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"))+" ")])])])])},Zk=[],Xk={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),this.$events.$on("keydown.cmd.shift.f",this.open)},destroyed(){this.$events.$off("keydown.cmd.shift.f",this.open)},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 Ip(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}}}},Qk=Xk,tb=(s("4cb2"),Object(c["a"])(Qk,Jk,Zk,!1,null,null,null)),eb=tb.exports,sb=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("span",{ref:"button",staticClass:"k-tag",attrs:{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()])},ib=[],nb={props:{removable:Boolean},methods:{remove(){this.removable&&this.$emit("remove")},focus(){this.$refs.button.focus()}}},ab=nb,rb=(s("021f"),Object(c["a"])(ab,sb,ib,!1,null,null,null)),ob=rb.exports,lb=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[!1!==t.viewEntryInMenu(i,e)?s("li",{key:"menu-item-"+i,attrs:{"aria-current":t.$store.state.view===i}},[s("k-dropdown-item",{attrs:{disabled:"disabled"===t.viewEntryInMenu(i,e),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()},cb=[],ub={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},db={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 ub[this.$store.state.view]},views(){return ub},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},viewEntryInMenu(t,e){let s=e.menu;return"function"===typeof s&&(s=s(this)),[!0,!1,"disabled"].indexOf(s)>=0?s:!1!==this.$permissions.access[t]||"disabled"}}},pb=db,hb=(s("1e3b"),Object(c["a"])(pb,lb,cb,!1,null,null,null)),mb=hb.exports,fb=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)},gb=[],kb={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}}},bb=kb,vb=(s("6bcd"),Object(c["a"])(bb,fb,gb,!1,null,null,null)),$b=vb.exports,yb=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)},_b=[],wb={props:{blueprint:String,help:String,name:String,parent:String},methods:{load(){return this.$api.get(this.parent+"/sections/"+this.name)}}},xb={mixins:[wb],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})}},Ob=xb,Cb=(s("4333"),Object(c["a"])(Ob,yb,_b,!1,null,null,null)),Sb=Cb.exports,Eb=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()},jb=[],Tb={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)}}},Lb={mixins:[Tb],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.statusIcon={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")}}},Ib=Lb,Ab=(s("224d"),Object(c["a"])(Ib,Eb,jb,!1,null,null,null)),Bb=Ab.exports,Db=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()},Mb=[],Nb={mixins:[Tb],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",":)")}}},Pb=Nb,Rb=(s("b7a8"),Object(c["a"])(Pb,Db,Mb,!1,null,null,null)),qb=Rb.exports,Fb=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)},Ub=[],Hb={mixins:[wb],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)}}},zb=Hb,Kb=(s("7d5d"),Object(c["a"])(zb,Fb,Ub,!1,null,null,null)),Gb=Kb.exports,Wb=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)},Yb=[],Vb={grid(){return!(!window.CSS||!window.CSS.supports("display","grid"))},fetch(){return void 0!==window.fetch},all(){return this.fetch()&&this.grid()}},Jb={computed:{hasFetchSupport(){return Vb.fetch()},hasGridSupport(){return Vb.grid()}},created(){this.$store.dispatch("content/current",null),Vb.all()&&this.$go("/")}},Zb=Jb,Xb=(s("d6fc"),Object(c["a"])(Zb,Wb,Yb,!1,null,null,null)),Qb=Xb.exports,tv=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)},ev=[],sv={props:{plugin:String,hash:String},beforeRouteEnter(t,e,s){s(t=>{t.$store.dispatch("breadcrumb",[]),t.$store.dispatch("content/current",null)})}},iv=sv,nv=Object(c["a"])(iv,tv,ev,!1,null,null,null),av=nv.exports,rv=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)])},ov=[],lv=(s("d221"),{}),cv=Object(c["a"])(lv,rv,ov,!1,null,null,null),uv=cv.exports,dv=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()},pv=[],hv={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)}}},mv={mixins:[hv],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",":)")}}},fv=mv,gv=Object(c["a"])(fv,dv,pv,!1,null,null,null),kv=gv.exports,bv=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()},vv=[],$v={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"))})})}}},yv=$v,_v=(s("146c"),Object(c["a"])(yv,bv,vv,!1,null,null,null)),wv=_v.exports,xv=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()},Ov=[],Cv={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("/"),"pending"===t.authStatus.status&&this.$store.dispatch("user/pending",t.authStatus),this.ready=!0,this.$store.dispatch("title",this.$t("login"))}).catch(t=>{this.issue=t})}},Sv=Cv,Ev=(s("24c1"),Object(c["a"])(Sv,xv,Ov,!1,null,null,null)),jv=Ev.exports,Tv=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)},Lv=[],Iv={mixins:[hv],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")}}},Av=Iv,Bv=Object(c["a"])(Av,Tv,Lv,!1,null,null,null),Dv=Bv.exports,Mv=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)},Nv=[],Pv={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}}}},Rv=Pv,qv=(s("310e"),Object(c["a"])(Rv,Mv,Nv,!1,null,null,null)),Fv=qv.exports,Uv=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)},Hv=[],zv={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}}}},Kv=zv,Gv=(s("9bd5"),Object(c["a"])(Kv,Uv,Hv,!1,null,null,null)),Wv=Gv.exports,Yv=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)},Vv=[],Jv={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}}}},Zv=Jv,Xv=Object(c["a"])(Zv,Yv,Vv,!1,null,null,null),Qv=Xv.exports,t$=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)},e$=[],s$={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()}}},i$=s$,n$=Object(c["a"])(i$,t$,e$,!1,null,null,null),a$=n$.exports,r$=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()},o$=[],l$={mixins:[hv],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()}}},c$=l$,u$=(s("bd96"),Object(c["a"])(c$,r$,o$,!1,null,null,null)),d$=u$.exports,p$=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(),s("k-button",{staticClass:"k-drawer-option",attrs:{disabled:!t.prev,icon:"angle-left"},on:{click:function(e){return e.preventDefault(),e.stopPropagation(),t.goTo(t.prev)}}}),s("k-button",{staticClass:"k-drawer-option",attrs:{disabled:!t.next,icon:"angle-right"},on:{click:function(e){return e.preventDefault(),e.stopPropagation(),t.goTo(t.next)}}}),s("k-button",{staticClass:"k-drawer-option",attrs:{icon:"trash"},on:{click:function(e){return e.preventDefault(),e.stopPropagation(),t.confirmToRemove(e)}}})]},proxy:!0}],null,!1,2458022885)}),s("k-remove-dialog",{ref:"removeDialog",attrs:{text:t.$t("field.blocks.delete.confirm")},on:{submit:t.remove}})],1)},h$=[],m$={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,next:Object,prev:Object,type:String},data(){return{skipFocus:!1}},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:{close(){this.$refs.drawer.close()},confirmToRemove(){this.$refs.removeDialog.open()},focus(){!0!==this.skipFocus&&("function"===typeof this.$refs.editor.focus?this.$refs.editor.focus():this.$refs.container.focus())},goTo(t){t&&(this.skipFocus=!0,this.close(),this.$nextTick(()=>{t.$refs.container.focus(),t.open(),this.skipFocus=!1}))},open(){this.$refs.drawer.open()},remove(){this.$refs.removeDialog.close(),this.$emit("remove",this.id)}}},f$=m$,g$=(s("bbdf"),Object(c["a"])(f$,p$,h$,!1,null,null,null)),k$=g$.exports,b$=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),next:t.prevNext(i+1),prev:t.prevNext(i-1)},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)},v$=[],$$={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()},prevNext(t){if(this.blocks[t]){let e=this.blocks[t];if(this.$refs["block-"+e.id])return this.$refs["block-"+e.id][0]}},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()}}},y$=$$,_$=(s("f470"),Object(c["a"])(y$,b$,v$,!1,null,null,null)),w$=_$.exports,x$=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)},O$=[],C$={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")}}},S$=C$,E$=(s("0069"),Object(c["a"])(S$,x$,O$,!1,null,null,null)),j$=E$.exports,T$=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:{disabled:t.isFull,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("delete"),icon:"trash"},on:{click:function(e){return t.$emit("confirmToRemove")}}}),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)},L$=[],I$={props:{isBatched:Boolean,isFull:Boolean,isHidden:Boolean},methods:{open(){this.$refs.options.open()}}},A$=I$,B$=(s("9c44"),Object(c["a"])(A$,T$,L$,!1,null,null,null)),D$=B$.exports,M$=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)},N$=[],P$={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()}}},R$=P$,q$=(s("f6c2"),Object(c["a"])(R$,M$,N$,!1,null,null,null)),F$=q$.exports,U$=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)},H$=[],z$={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}}},K$=z$,G$=(s("c21a"),Object(c["a"])(K$,U$,H$,!1,null,null,null)),W$=G$.exports,Y$={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})}}},V$=Y$,J$=Object(c["a"])(V$,mk,fk,!1,null,null,null),Z$=J$.exports;I["a"].component("k-block",k$),I["a"].component("k-blocks",w$),I["a"].component("k-block-figure",j$),I["a"].component("k-block-options",D$),I["a"].component("k-block-selector",F$),I["a"].component("k-block-title",W$),I["a"].component("k-block-type",Z$);const X$=s("9711");X$.keys().map(t=>{const e=t.match(/\w+/)[0],s=e.toLowerCase();let i=X$(t).default;i.extends=Z$,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",Hs),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",Hi),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",zn),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",Gc),I["a"].component("k-list-field",Xc),I["a"].component("k-multiselect-field",nu),I["a"].component("k-number-field",uu),I["a"].component("k-pages-field",gu),I["a"].component("k-password-field",_u),I["a"].component("k-radio-field",Eu),I["a"].component("k-range-field",Bu),I["a"].component("k-select-field",qu),I["a"].component("k-structure-field",Gu),I["a"].component("k-tags-field",Xu),I["a"].component("k-text-field",ud),I["a"].component("k-textarea-field",gd),I["a"].component("k-tel-field",nd),I["a"].component("k-time-field",_d),I["a"].component("k-toggle-field",Ed),I["a"].component("k-url-field",Bd),I["a"].component("k-users-field",qd),I["a"].component("k-writer-field",Gd),I["a"].component("k-toolbar",ep),I["a"].component("k-toolbar-email-dialog",op),I["a"].component("k-toolbar-link-dialog",hp),I["a"].component("k-date-field-preview",vp),I["a"].component("k-email-field-preview",jp),I["a"].component("k-files-field-preview",Rp),I["a"].component("k-list-field-preview",Kp),I["a"].component("k-pages-field-preview",Zp),I["a"].component("k-toggle-field-preview",ch),I["a"].component("k-time-field-preview",ih),I["a"].component("k-url-field-preview",Op),I["a"].component("k-users-field-preview",fh),I["a"].component("k-writer-field-preview",yh),I["a"].component("k-aspect-ratio",Sh),I["a"].component("k-bar",Ah),I["a"].component("k-box",Rh),I["a"].component("k-card",Kh),I["a"].component("k-cards",Zh),I["a"].component("k-collection",im),I["a"].component("k-column",cm),I["a"].component("k-dropzone",fm),I["a"].component("k-empty",ym),I["a"].component("k-file-preview",Sm),I["a"].component("k-grid",Am),I["a"].component("k-header",Rm),I["a"].component("k-list",Km),I["a"].component("k-list-item",Zm),I["a"].component("k-overlay",nf),I["a"].component("k-tabs",uf),I["a"].component("k-view",gf),I["a"].component("k-draggable",xf),I["a"].component("k-error-boundary",Ef),I["a"].component("k-headline",Bf),I["a"].component("k-icon",qf),I["a"].component("k-image",Gf),I["a"].component("k-loader",Zf),I["a"].component("k-progress",ig),I["a"].component("k-status-icon",fg),I["a"].component("k-sort-handle",cg),I["a"].component("k-text",yg),I["a"].component("k-user-info",Sg),I["a"].component("k-button",Ag),I["a"].component("k-button-disabled",Rg),I["a"].component("k-button-group",Kg),I["a"].component("k-button-link",Zg),I["a"].component("k-button-native",nk),I["a"].component("k-dropdown",uk),I["a"].component("k-dropdown-content",vk),I["a"].component("k-dropdown-item",Ok),I["a"].component("k-languages-dropdown",Nk),I["a"].component("k-link",Lk),I["a"].component("k-pagination",Hk),I["a"].component("k-prev-next",Vk),I["a"].component("k-search",eb),I["a"].component("k-tag",ob),I["a"].component("k-topbar",mb),I["a"].component("k-sections",$b),I["a"].component("k-info-section",Sb),I["a"].component("k-pages-section",Bb),I["a"].component("k-files-section",qb),I["a"].component("k-fields-section",Gb),I["a"].component("k-browser-view",Qb),I["a"].component("k-custom-view",av),I["a"].component("k-error-view",uv),I["a"].component("k-file-view",kv),I["a"].component("k-installation-view",wv),I["a"].component("k-login-view",jv),I["a"].component("k-page-view",Dv),I["a"].component("k-reset-password-view",Fv),I["a"].component("k-settings-view",Wv),I["a"].component("k-site-view",Qv),I["a"].component("k-users-view",a$),I["a"].component("k-user-view",d$);var Q$=s("2f62"),ty={namespaced:!0,state:{current:null},mutations:{CURRENT(t,e){t.current=e}},actions:{current(t,e){t.commit("CURRENT",e)}}};const ey=(t,e)=>{localStorage.setItem("kirby$content$"+t,JSON.stringify(e))};var sy={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=>Y(e.model(t).originals),values:(t,e)=>t=>({...e.originals(t),...e.changes(t)}),changes:(t,e)=>t=>Y(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=Y(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=Y(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),ey(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]),ey(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:Y(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])}}},iy={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)}}},ny={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))}}},ay={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)}}},ry={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})}}},oy={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)}}},ly={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}}},cy={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(Q$["a"]);var uy=new Q$["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:ty,content:sy,drawers:iy,heartbeat:ny,languages:ay,notification:ry,system:oy,translation:ly,user:cy}});I["a"].config.errorHandler=t=>{O.debug&&window.console.error(t),uy.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),uy.dispatch("error",t+". See the console for more information.")};var dy=s("f2f3");I["a"].use(dy["a"].plugin,uy);var py=s("19e9"),hy=s.n(py),my=s("5a0c"),fy=s.n(my),gy=s("f906"),ky=s.n(gy),by=s("0ecf"),vy=s.n(by);fy.a.extend(ky.a),fy.a.extend(vy.a),I["a"].prototype.$library={autosize:hy.a,dayjs:fy.a};let $y={};for(var yy in I["a"].options.components)$y[yy]=I["a"].options.components[yy];let _y={section:wb};Object.entries(window.panel.plugins.components).forEach(([t,e])=>{e.template||e.render||e.extends?(e.extends&&"string"===typeof e.extends&&(e.extends=$y[e.extends].extend({options:e,components:{...$y,...e.components||{}}}),e.template&&(e.render=null)),e.mixins&&(e.mixins=e.mixins.map(t=>"string"===typeof t?_y[t]:t)),$y[t]&&window.console.warn(`Plugin is replacing "${t}"`),I["a"].component(t,e),$y[t]=I["a"].options.components[t]):uy.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 uy.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 wy=s("82f1"),xy=s("8c4f"),Oy=function(t,e,s){uy.dispatch("system/load").then(()=>{const e=uy.state.user.current;if(!e)return uy.dispatch("user/visit",t.path),uy.dispatch("user/logout"),!1;const i=e.permissions.access;return!1===i.panel?(window.location.href=O.site,!1):!1===i[t.meta.view]?(uy.dispatch("notification/error",{message:I["a"].i18n.translate("error.access.view")}),s(!1===i.site?"/account":"/")):void s()})};let Cy=[{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)}),uy.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:Oy,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:Oy,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:Oy,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:Oy,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:Oy,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:Oy},{path:"/users/role/:role",name:"UsersByRole",meta:{view:"users"},component:I["a"].component("k-users-view"),beforeEnter:Oy,props:t=>({role:t.params.role})},{path:"/users",name:"Users",meta:{view:"users"},beforeEnter:Oy,component:I["a"].component("k-users-view")},{path:"/users/:id",name:"User",meta:{view:"users"},component:I["a"].component("k-user-view"),beforeEnter:Oy,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:Oy,props:t=>({id:!!uy.state.user.current&&uy.state.user.current.id,tab:t.hash.slice(1)||"main"})},{path:"/reset-password",name:"Reset password",meta:{view:"resetPassword"},component:I["a"].component("k-reset-password-view"),beforeEnter:Oy},{path:"/plugins/:id",name:"Plugin",meta:{view:"plugin"},props:t=>({plugin:t.params.id,hash:t.hash.slice(1)}),beforeEnter:Oy,component:I["a"].component("k-custom-view")}];Cy.push({path:"*",name:"NotFound",beforeEnter:(t,e,s)=>{s("/")}});var Sy=Cy;I["a"].use(xy["a"]);const Ey=new xy["a"]({mode:"history",routes:Sy,url:"/"===O.url?"":O.url});Ey.beforeEach((t,e,s)=>{"Browser"!==t.name&&!1===Vb.all()&&s("/browser"),t.meta.outside||uy.dispatch("user/visit",t.path),"plugin"===t.meta.view?uy.dispatch("view",t.params.id):uy.dispatch("view",t.meta.view),uy.dispatch("content/lock",null),uy.dispatch("content/unlock",null),uy.dispatch("heartbeat/clear"),s()});var jy=Ey;I["a"].config.productionTip=!1,I["a"].config.devtools=!0,I["a"].use(rt),I["a"].use(K),I["a"].use(z),I["a"].use(W.a),I["a"].use(wy["a"]),I["a"].use(H,uy),I["a"].prototype.$go=t=>{t=t.split("#"),t={path:t[0],hash:t[1]||null},jy.push(t).catch(t=>{if(t&&t.name&&"NavigationDuplicated"===t.name)return!0;throw t})},new I["a"]({router:jy,store:uy,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,"caption-marks":t.captionMarks,"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:{captionMarks(){return this.field("caption",{marks:!0}).marks},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:{inline:t.textField.inline,marks:t.textField.marks,nodes:t.textField.nodes,placeholder:t.textField.placeholder,value:t.content.text},on:{input:function(e){return t.update({text:e})}}})},n=[],a={computed:{textField(){return this.field("text",{})}},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/src/Api/Api.php b/kirby/src/Api/Api.php index 831ee52..185ec47 100755 --- a/kirby/src/Api/Api.php +++ b/kirby/src/Api/Api.php @@ -476,7 +476,7 @@ class Api * Setter for the authentication callback * * @param \Closure|null $authentication - * @return self + * @return $this */ protected function setAuthentication(Closure $authentication = null) { @@ -488,7 +488,7 @@ class Api * Setter for the collections definition * * @param array|null $collections - * @return self + * @return $this */ protected function setCollections(array $collections = null) { @@ -502,7 +502,7 @@ class Api * Setter for the injected data * * @param array|null $data - * @return self + * @return $this */ protected function setData(array $data = null) { @@ -514,7 +514,7 @@ class Api * Setter for the debug flag * * @param bool $debug - * @return self + * @return $this */ protected function setDebug(bool $debug = false) { @@ -526,7 +526,7 @@ class Api * Setter for the model definitions * * @param array|null $models - * @return self + * @return $this */ protected function setModels(array $models = null) { @@ -541,7 +541,7 @@ class Api * Setter for the request data * * @param array|null $requestData - * @return self + * @return $this */ protected function setRequestData(array $requestData = null) { @@ -559,7 +559,7 @@ class Api * Setter for the request method * * @param string|null $requestMethod - * @return self + * @return $this */ protected function setRequestMethod(string $requestMethod = null) { @@ -571,7 +571,7 @@ class Api * Setter for the route definitions * * @param array|null $routes - * @return self + * @return $this */ protected function setRoutes(array $routes = null) { diff --git a/kirby/src/Api/Collection.php b/kirby/src/Api/Collection.php index 6d87025..877ca01 100755 --- a/kirby/src/Api/Collection.php +++ b/kirby/src/Api/Collection.php @@ -77,7 +77,7 @@ class Collection /** * @param string|array|null $keys - * @return self + * @return $this * @throws \Exception */ public function select($keys = null) @@ -168,7 +168,7 @@ class Collection /** * @param string $view - * @return self + * @return $this */ public function view(string $view) { diff --git a/kirby/src/Api/Model.php b/kirby/src/Api/Model.php index fc5ed2f..b8ef9e2 100755 --- a/kirby/src/Api/Model.php +++ b/kirby/src/Api/Model.php @@ -84,7 +84,7 @@ class Model /** * @param null $keys - * @return self + * @return $this * @throws \Exception */ public function select($keys = null) @@ -225,7 +225,7 @@ class Model /** * @param string $name - * @return self + * @return $this * @throws \Exception */ public function view(string $name) diff --git a/kirby/src/Cache/FileCache.php b/kirby/src/Cache/FileCache.php index 30c7972..a0adf74 100755 --- a/kirby/src/Cache/FileCache.php +++ b/kirby/src/Cache/FileCache.php @@ -2,6 +2,7 @@ namespace Kirby\Cache; +use Kirby\Exception\Exception; use Kirby\Toolkit\Dir; use Kirby\Toolkit\F; use Kirby\Toolkit\Str; @@ -77,19 +78,19 @@ class FileCache extends Cache // forward slashes don't need special treatment case '/': break; - + // backslashes get their own marker in the path // to differentiate the cache key from one with forward slashes case '\\': $keyParts[] = '_backslash'; break; - + // empty part means two slashes in a row; // special marker like for backslashes case '': $keyParts[] = '_empty'; break; - + // an actual path segment default: // check if the segment only contains safe characters; @@ -178,10 +179,41 @@ class FileCache extends Cache { $file = $this->file($key); - if (is_file($file) === true) { - return F::remove($file); - } else { - return false; + if (is_file($file) === true && F::remove($file) === true) { + $this->removeEmptyDirectories(dirname($file)); + return true; + } + + return false; + } + + /** + * Removes empty directories safely by checking each directory + * up to the root directory + * + * @param string $dir + * @return void + */ + protected function removeEmptyDirectories(string $dir): void + { + try { + // ensure the path doesn't end with a slash for the next comparison + $dir = rtrim($dir, '/\/'); + + // checks all directory segments until reaching the root directory + while (Str::startsWith($dir, $this->root()) === true && $dir !== $this->root()) { + $files = array_diff(scandir($dir) ?? [], ['.', '..']); + + if (empty($files) === true && Dir::remove($dir) === true) { + // continue with the next level up + $dir = dirname($dir); + } else { + // no need to continue with the next level up as `$dir` was not deleted + break; + } + } + } catch (Exception $e) { // @codeCoverageIgnore + // silently stops the process } } diff --git a/kirby/src/Cache/Value.php b/kirby/src/Cache/Value.php index 038965c..d59e2e9 100755 --- a/kirby/src/Cache/Value.php +++ b/kirby/src/Cache/Value.php @@ -25,6 +25,8 @@ class Value /** * the number of minutes until the value expires + * @todo Rename this property to $expiry to reflect + * both minutes and absolute timestamps * @var int */ protected $minutes; @@ -40,7 +42,8 @@ class Value * * @param mixed $value * @param int $minutes the number of minutes until the value expires - * @param int $created the unix timestamp when the value has been created + * or an absolute UNIX timestamp + * @param int $created the UNIX timestamp when the value has been created */ public function __construct($value, int $minutes = 0, int $created = null) { @@ -72,6 +75,11 @@ class Value return null; } + if ($this->minutes > 1000000000) { + // absolute timestamp + return $this->minutes; + } + return $this->created + ($this->minutes * 60); } @@ -79,7 +87,7 @@ class Value * Creates a value object from an array * * @param array $array - * @return self + * @return static */ public static function fromArray(array $array) { @@ -91,7 +99,7 @@ class Value * returns null on error * * @param string $json - * @return self|null + * @return static|null */ public static function fromJson(string $json) { diff --git a/kirby/src/Cms/Api.php b/kirby/src/Cms/Api.php index 415cd4d..f6dfe88 100755 --- a/kirby/src/Cms/Api.php +++ b/kirby/src/Cms/Api.php @@ -258,7 +258,7 @@ class Api extends BaseApi * Setter for the parent Kirby instance * * @param \Kirby\Cms\App $kirby - * @return self + * @return $this */ protected function setKirby(App $kirby) { diff --git a/kirby/src/Cms/App.php b/kirby/src/Cms/App.php index 703e5e6..a887e5f 100755 --- a/kirby/src/Cms/App.php +++ b/kirby/src/Cms/App.php @@ -11,6 +11,7 @@ use Kirby\Exception\NotFoundException; use Kirby\Http\Request; use Kirby\Http\Router; use Kirby\Http\Server; +use Kirby\Http\Uri; use Kirby\Http\Visitor; use Kirby\Session\AutoSession; use Kirby\Toolkit\A; @@ -224,7 +225,7 @@ class App /** * Normalizes and globally sets the configured options * - * @return self + * @return $this */ protected function bakeOptions() { @@ -260,7 +261,7 @@ class App * Sets the directory structure * * @param array|null $roots - * @return self + * @return $this */ protected function bakeRoots(array $roots = null) { @@ -273,7 +274,7 @@ class App * Sets the Url structure * * @param array|null $urls - * @return self + * @return $this */ protected function bakeUrls(array $urls = null) { @@ -342,7 +343,7 @@ class App * * @param array $props * @param bool $setInstance If false, the instance won't be set globally - * @return self + * @return static */ public function clone(array $props = [], bool $setInstance = true) { @@ -609,7 +610,7 @@ class App * * @param \Kirby\Cms\App|null $instance * @param bool $lazy If `true`, the instance is only returned if already existing - * @return self|null + * @return static|null */ public static function instance(self $instance = null, bool $lazy = false) { @@ -1226,6 +1227,10 @@ class App */ public function session(array $options = []) { + // never cache responses that depend on the session + $this->response()->cache(false); + $this->response()->header('Cache-Control', 'no-store', true); + return $this->sessionHandler()->get($options); } @@ -1244,7 +1249,7 @@ class App * Create your own set of languages * * @param array|null $languages - * @return self + * @return $this */ protected function setLanguages(array $languages = null) { @@ -1266,7 +1271,7 @@ class App * used for the router * * @param string|null $path - * @return self + * @return $this */ protected function setPath(string $path = null) { @@ -1278,7 +1283,7 @@ class App * Sets the request * * @param array|null $request - * @return self + * @return $this */ protected function setRequest(array $request = null) { @@ -1293,7 +1298,7 @@ class App * Create your own set of roles * * @param array|null $roles - * @return self + * @return $this */ protected function setRoles(array $roles = null) { @@ -1310,7 +1315,7 @@ class App * Sets a custom Site object * * @param \Kirby\Cms\Site|array|null $site - * @return self + * @return $this */ protected function setSite($site = null) { @@ -1479,11 +1484,26 @@ class App * Returns a system url * * @param string $type - * @return string + * @param bool $object If set to `true`, the URL is converted to an object + * @return string|\Kirby\Http\Uri */ - public function url(string $type = 'index'): string + public function url(string $type = 'index', bool $object = false) { - return $this->urls->__get($type); + $url = $this->urls->__get($type); + + if ($object === true) { + if (Url::isAbsolute($url)) { + return Url::toObject($url); + } + + // index URL was configured without host, use the current host + return Uri::current([ + 'path' => $url, + 'query' => null + ]); + } + + return $url; } /** diff --git a/kirby/src/Cms/AppErrors.php b/kirby/src/Cms/AppErrors.php index 36b823b..28a2c34 100755 --- a/kirby/src/Cms/AppErrors.php +++ b/kirby/src/Cms/AppErrors.php @@ -83,7 +83,7 @@ trait AppErrors $fatal = $this->option('fatal'); if (is_a($fatal, 'Closure') === true) { - echo $fatal($this); + echo $fatal($this, $exception); } else { include $this->root('kirby') . '/views/fatal.php'; } @@ -144,6 +144,7 @@ trait AppErrors }); $this->setWhoopsHandler($handler); + $this->whoops()->sendHttpCode(false); } /** diff --git a/kirby/src/Cms/AppTranslations.php b/kirby/src/Cms/AppTranslations.php index 4bfb916..a174f85 100755 --- a/kirby/src/Cms/AppTranslations.php +++ b/kirby/src/Cms/AppTranslations.php @@ -158,7 +158,8 @@ trait AppTranslations /** * Set locale settings * - * @deprecated 3.5.0 Use \Kirby\Toolkit\Locale::set() instead + * @deprecated 3.5.0 Use `\Kirby\Toolkit\Locale::set()` instead + * @todo Remove in 3.6.0 * * @param string|array $locale */ diff --git a/kirby/src/Cms/Asset.php b/kirby/src/Cms/Asset.php index a722238..9c68460 100755 --- a/kirby/src/Cms/Asset.php +++ b/kirby/src/Cms/Asset.php @@ -116,7 +116,7 @@ class Asset * Setter for the path * * @param string $path - * @return self + * @return $this */ protected function setPath(string $path) { diff --git a/kirby/src/Cms/Auth/EmailChallenge.php b/kirby/src/Cms/Auth/EmailChallenge.php index a406612..f6e540d 100755 --- a/kirby/src/Cms/Auth/EmailChallenge.php +++ b/kirby/src/Cms/Auth/EmailChallenge.php @@ -56,12 +56,12 @@ class EmailChallenge extends Challenge $kirby = $user->kirby(); $kirby->email([ - 'from' => $kirby->option('auth.challenge.email.from', 'noreply@' . $kirby->system()->indexUrl()), + 'from' => $kirby->option('auth.challenge.email.from', 'noreply@' . $kirby->url('index', true)->host()), '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') + I18n::translate('login.email.' . $mode . '.subject', null, $user->language()) ), 'template' => 'auth/' . $mode, 'data' => [ diff --git a/kirby/src/Cms/Auth/Status.php b/kirby/src/Cms/Auth/Status.php index e7f39fd..42a4a55 100755 --- a/kirby/src/Cms/Auth/Status.php +++ b/kirby/src/Cms/Auth/Status.php @@ -153,7 +153,7 @@ class Status * Sets the type of the active challenge * * @param string|null $challenge - * @return self + * @return $this */ protected function setChallenge(?string $challenge = null) { @@ -166,7 +166,7 @@ class Status * a fallback when $challenge is `null` * * @param string|null $challengeFallback - * @return self + * @return $this */ protected function setChallengeFallback(?string $challengeFallback = null) { @@ -178,7 +178,7 @@ class Status * Sets the email address of the current/pending user * * @param string|null $email - * @return self + * @return $this */ protected function setEmail(?string $email = null) { @@ -190,7 +190,7 @@ class Status * Sets the Kirby instance for user lookup * * @param \Kirby\Cms\App $kirby - * @return self + * @return $this */ protected function setKirby(App $kirby) { @@ -202,7 +202,7 @@ class Status * Sets the authentication status * * @param string $status `active|impersonated|pending|inactive` - * @return self + * @return $this */ protected function setStatus(string $status) { diff --git a/kirby/src/Cms/Block.php b/kirby/src/Cms/Block.php index 3be99cb..1a1450d 100755 --- a/kirby/src/Cms/Block.php +++ b/kirby/src/Cms/Block.php @@ -3,6 +3,7 @@ namespace Kirby\Cms; use Kirby\Exception\InvalidArgumentException; +use Kirby\Toolkit\Str; use Throwable; /** @@ -86,6 +87,10 @@ class Block extends Item /** * Deprecated method to return the block type * + * @deprecated 3.5.0 Use `\Kirby\Cms\Block::type()` instead + * @todo Add deprecated() helper warning in 3.6.0 + * @todo Remove in 3.7.0 + * * @return string */ public function _key(): string @@ -96,6 +101,10 @@ class Block extends Item /** * Deprecated method to return the block id * + * @deprecated 3.5.0 Use `\Kirby\Cms\Block::id()` instead + * @todo Add deprecated() helper warning in 3.6.0 + * @todo Remove in 3.7.0 + * * @return string */ public function _uid(): string @@ -131,6 +140,19 @@ class Block extends Item ]; } + /** + * Converts the block 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); + } + /** * Checks if the block is empty * diff --git a/kirby/src/Cms/BlockConverter.php b/kirby/src/Cms/BlockConverter.php index ec12c52..3c0d990 100755 --- a/kirby/src/Cms/BlockConverter.php +++ b/kirby/src/Cms/BlockConverter.php @@ -219,7 +219,7 @@ class BlockConverter { return [ 'content' => [ - 'text' => $params['content'] + 'text' => '

' . $params['content'] . '

' ], 'type' => 'text' ]; diff --git a/kirby/src/Cms/Blueprint.php b/kirby/src/Cms/Blueprint.php index a788e6f..8659b4a 100755 --- a/kirby/src/Cms/Blueprint.php +++ b/kirby/src/Cms/Blueprint.php @@ -219,7 +219,7 @@ class Blueprint * @param string $name * @param string|null $fallback * @param \Kirby\Cms\Model $model - * @return self + * @return static|null */ public static function factory(string $name, string $fallback = null, Model $model) { diff --git a/kirby/src/Cms/Collection.php b/kirby/src/Cms/Collection.php index 8cb5486..d727054 100755 --- a/kirby/src/Cms/Collection.php +++ b/kirby/src/Cms/Collection.php @@ -271,7 +271,7 @@ class Collection extends BaseCollection * Any part of the query is optional. * * @param array $query - * @return self + * @return static */ public function query(array $query = []) { diff --git a/kirby/src/Cms/Content.php b/kirby/src/Cms/Content.php index a9cbf86..d810934 100755 --- a/kirby/src/Cms/Content.php +++ b/kirby/src/Cms/Content.php @@ -198,7 +198,7 @@ class Content * passed key(s) * * @param string ...$keys - * @return self + * @return static */ public function not(...$keys) { @@ -227,7 +227,7 @@ class Content * Set the parent model * * @param \Kirby\Cms\Model $parent - * @return self + * @return $this */ public function setParent(Model $parent) { @@ -252,7 +252,7 @@ class Content * * @param array|null $content * @param bool $overwrite - * @return self + * @return $this */ public function update(array $content = null, bool $overwrite = false) { diff --git a/kirby/src/Cms/ContentTranslation.php b/kirby/src/Cms/ContentTranslation.php index cf25974..906e79c 100755 --- a/kirby/src/Cms/ContentTranslation.php +++ b/kirby/src/Cms/ContentTranslation.php @@ -163,7 +163,7 @@ class ContentTranslation /** * @param string $code - * @return self + * @return $this */ protected function setCode(string $code) { @@ -173,7 +173,7 @@ class ContentTranslation /** * @param array|null $content - * @return self + * @return $this */ protected function setContent(array $content = null) { @@ -183,7 +183,7 @@ class ContentTranslation /** * @param \Kirby\Cms\Model $parent - * @return self + * @return $this */ protected function setParent(Model $parent) { @@ -193,7 +193,7 @@ class ContentTranslation /** * @param string|null $slug - * @return self + * @return $this */ protected function setSlug(string $slug = null) { @@ -216,7 +216,7 @@ class ContentTranslation * * @param array|null $data * @param bool $overwrite - * @return self + * @return $this */ public function update(array $data = null, bool $overwrite = false) { diff --git a/kirby/src/Cms/Field.php b/kirby/src/Cms/Field.php index 50969e9..5a2caf4 100755 --- a/kirby/src/Cms/Field.php +++ b/kirby/src/Cms/Field.php @@ -179,7 +179,7 @@ class Field * Provides a fallback if the field value is empty * * @param mixed $fallback - * @return self + * @return $this|static */ public function or($fallback = null) { diff --git a/kirby/src/Cms/File.php b/kirby/src/Cms/File.php index 3bb7718..347350f 100755 --- a/kirby/src/Cms/File.php +++ b/kirby/src/Cms/File.php @@ -254,6 +254,8 @@ class File extends ModelWithContent } else { if ($this->type() === 'image') { return '(image: ' . $url . ')'; + } elseif ($this->type() === 'video') { + return '(video: ' . $url . ')'; } else { return '(file: ' . $url . ')'; } @@ -265,7 +267,7 @@ class File extends ModelWithContent * * @internal * @param mixed $props - * @return self + * @return static */ public static function factory($props) { @@ -661,7 +663,7 @@ class File extends ModelWithContent * Sets the Blueprint object * * @param array|null $blueprint - * @return self + * @return $this */ protected function setBlueprint(array $blueprint = null) { @@ -677,7 +679,7 @@ class File extends ModelWithContent * Sets the filename * * @param string $filename - * @return self + * @return $this */ protected function setFilename(string $filename) { @@ -689,7 +691,7 @@ class File extends ModelWithContent * Sets the parent model object * * @param \Kirby\Cms\Model|null $parent - * @return self + * @return $this */ protected function setParent(Model $parent = null) { @@ -702,7 +704,7 @@ class File extends ModelWithContent * auto root detection * * @param string|null $root - * @return self + * @return $this */ protected function setRoot(string $root = null) { @@ -712,7 +714,7 @@ class File extends ModelWithContent /** * @param string|null $template - * @return self + * @return $this */ protected function setTemplate(string $template = null) { @@ -724,7 +726,7 @@ class File extends ModelWithContent * Sets the url * * @param string|null $url - * @return self + * @return $this */ protected function setUrl(string $url = null) { diff --git a/kirby/src/Cms/FileActions.php b/kirby/src/Cms/FileActions.php index 91b8f3f..83f9c7d 100755 --- a/kirby/src/Cms/FileActions.php +++ b/kirby/src/Cms/FileActions.php @@ -25,7 +25,7 @@ trait FileActions * * @param string $name * @param bool $sanitize - * @return self + * @return $this|static * @throws \Kirby\Exception\LogicException */ public function changeName(string $name, bool $sanitize = true) @@ -84,7 +84,7 @@ trait FileActions * Changes the file's sorting number in the meta file * * @param int $sort - * @return self + * @return static */ public function changeSort(int $sort) { @@ -161,7 +161,7 @@ trait FileActions * way of generating files. * * @param array $props - * @return self + * @return static * @throws \Kirby\Exception\InvalidArgumentException * @throws \Kirby\Exception\LogicException */ @@ -256,7 +256,7 @@ trait FileActions * Move the file to the public media folder * if it's not already there. * - * @return self + * @return $this */ public function publish() { @@ -272,7 +272,7 @@ trait FileActions * source. * * @param string $source - * @return self + * @return static * @throws \Kirby\Exception\LogicException */ public function replace(string $source) @@ -295,7 +295,7 @@ trait FileActions /** * Remove all public versions of this file * - * @return self + * @return $this */ public function unpublish() { diff --git a/kirby/src/Cms/FileFoundation.php b/kirby/src/Cms/FileFoundation.php index 058a455..6529f40 100755 --- a/kirby/src/Cms/FileFoundation.php +++ b/kirby/src/Cms/FileFoundation.php @@ -189,7 +189,7 @@ trait FileFoundation * Setter for the root * * @param string|null $root - * @return self + * @return $this */ protected function setRoot(string $root = null) { @@ -201,7 +201,7 @@ trait FileFoundation * Setter for the file url * * @param string $url - * @return self + * @return $this */ protected function setUrl(string $url) { diff --git a/kirby/src/Cms/FileVersion.php b/kirby/src/Cms/FileVersion.php index b9913a5..ce0ead9 100755 --- a/kirby/src/Cms/FileVersion.php +++ b/kirby/src/Cms/FileVersion.php @@ -97,7 +97,7 @@ class FileVersion * Applies the stored modifications and * saves the file on disk * - * @return self + * @return $this */ public function save() { diff --git a/kirby/src/Cms/Files.php b/kirby/src/Cms/Files.php index 2e1cd69..302423c 100755 --- a/kirby/src/Cms/Files.php +++ b/kirby/src/Cms/Files.php @@ -31,7 +31,7 @@ class Files extends Collection * current collection * * @param mixed $object - * @return self + * @return $this */ public function add($object) { @@ -57,7 +57,7 @@ class Files extends Collection * * @param array $files List of file ids * @param int $offset Sorting offset - * @return self + * @return $this */ public function changeSort(array $files, int $offset = 0) { @@ -76,7 +76,7 @@ class Files extends Collection * * @param array $files * @param \Kirby\Cms\Model $parent - * @return self + * @return static */ public static function factory(array $files, Model $parent) { @@ -124,7 +124,7 @@ class Files extends Collection * Filter all files by the given template * * @param null|string|array $template - * @return self + * @return $this|static */ public function template($template) { diff --git a/kirby/src/Cms/Form.php b/kirby/src/Cms/Form.php index 4638085..522b7ae 100755 --- a/kirby/src/Cms/Form.php +++ b/kirby/src/Cms/Form.php @@ -90,7 +90,7 @@ class Form extends BaseForm /** * @param \Kirby\Cms\Model $model * @param array $props - * @return self + * @return static */ public static function for(Model $model, array $props = []) { diff --git a/kirby/src/Cms/HasChildren.php b/kirby/src/Cms/HasChildren.php index d9b4bf7..5a6808c 100755 --- a/kirby/src/Cms/HasChildren.php +++ b/kirby/src/Cms/HasChildren.php @@ -213,7 +213,7 @@ trait HasChildren * Sets the Children collection * * @param array|null $children - * @return self + * @return $this */ protected function setChildren(array $children = null) { @@ -228,7 +228,7 @@ trait HasChildren * Sets the Drafts collection * * @param array|null $drafts - * @return self + * @return $this */ protected function setDrafts(array $drafts = null) { diff --git a/kirby/src/Cms/HasFiles.php b/kirby/src/Cms/HasFiles.php index fbf2637..c648ec8 100755 --- a/kirby/src/Cms/HasFiles.php +++ b/kirby/src/Cms/HasFiles.php @@ -203,7 +203,7 @@ trait HasFiles * Sets the Files collection * * @param \Kirby\Cms\Files|null $files - * @return self + * @return $this */ protected function setFiles(array $files = null) { diff --git a/kirby/src/Cms/Ingredients.php b/kirby/src/Cms/Ingredients.php index 618ed4d..6a121a2 100755 --- a/kirby/src/Cms/Ingredients.php +++ b/kirby/src/Cms/Ingredients.php @@ -70,7 +70,7 @@ class Ingredients * * @internal * @param array $ingredients - * @return self + * @return static */ public static function bake(array $ingredients) { diff --git a/kirby/src/Cms/Language.php b/kirby/src/Cms/Language.php index 557347d..97ca7b7 100755 --- a/kirby/src/Cms/Language.php +++ b/kirby/src/Cms/Language.php @@ -197,7 +197,7 @@ class Language extends Model * * @internal * @param array $props - * @return self + * @return static */ public static function create(array $props) { @@ -445,7 +445,7 @@ class Language extends Model * Saves the language settings in the languages folder * * @internal - * @return self + * @return $this */ public function save() { @@ -476,7 +476,7 @@ class Language extends Model /** * @param string $code - * @return self + * @return $this */ protected function setCode(string $code) { @@ -486,7 +486,7 @@ class Language extends Model /** * @param bool $default - * @return self + * @return $this */ protected function setDefault(bool $default = false) { @@ -496,7 +496,7 @@ class Language extends Model /** * @param string $direction - * @return self + * @return $this */ protected function setDirection(string $direction = 'ltr') { @@ -506,7 +506,7 @@ class Language extends Model /** * @param string|array $locale - * @return self + * @return $this */ protected function setLocale($locale = null) { @@ -521,7 +521,7 @@ class Language extends Model /** * @param string $name - * @return self + * @return $this */ protected function setName(string $name = null) { @@ -531,7 +531,7 @@ class Language extends Model /** * @param array $slugs - * @return self + * @return $this */ protected function setSlugs(array $slugs = null) { @@ -541,7 +541,7 @@ class Language extends Model /** * @param array $smartypants - * @return self + * @return $this */ protected function setSmartypants(array $smartypants = null) { @@ -551,7 +551,7 @@ class Language extends Model /** * @param array $translations - * @return self + * @return $this */ protected function setTranslations(array $translations = null) { @@ -561,7 +561,7 @@ class Language extends Model /** * @param string $url - * @return self + * @return $this */ protected function setUrl(string $url = null) { @@ -639,7 +639,7 @@ class Language extends Model * * @internal * @param array $props - * @return self + * @return static */ public function update(array $props = null) { diff --git a/kirby/src/Cms/Languages.php b/kirby/src/Cms/Languages.php index 2ed31f4..1b84359 100755 --- a/kirby/src/Cms/Languages.php +++ b/kirby/src/Cms/Languages.php @@ -19,7 +19,7 @@ class Languages extends Collection /** * Creates a new collection with the given language objects * - * @param array $objects + * @param array $objects `Kirby\Cms\Language` objects * @param null $parent * @throws \Kirby\Exception\DuplicateException */ @@ -76,7 +76,7 @@ class Languages extends Collection * Convert all defined languages to a collection * * @internal - * @return self + * @return static */ public static function load() { diff --git a/kirby/src/Cms/Model.php b/kirby/src/Cms/Model.php index 5788640..9cbda75 100755 --- a/kirby/src/Cms/Model.php +++ b/kirby/src/Cms/Model.php @@ -76,7 +76,7 @@ abstract class Model * Setter for the parent Kirby object * * @param \Kirby\Cms\App|null $kirby - * @return self + * @return $this */ protected function setKirby(App $kirby = null) { @@ -89,7 +89,7 @@ abstract class Model * * @internal * @param \Kirby\Cms\Site|null $site - * @return self + * @return $this */ public function setSite(Site $site = null) { diff --git a/kirby/src/Cms/ModelWithContent.php b/kirby/src/Cms/ModelWithContent.php index 33fbe01..4f3a8fd 100755 --- a/kirby/src/Cms/ModelWithContent.php +++ b/kirby/src/Cms/ModelWithContent.php @@ -231,7 +231,7 @@ abstract class ModelWithContent extends Model * @param string $field * @param int $by * @param int $min - * @return self + * @return static */ public function decrement(string $field, int $by = 1, int $min = 0) { @@ -306,7 +306,7 @@ abstract class ModelWithContent extends Model * @param string $field * @param int $by * @param int|null $max - * @return self + * @return static */ public function increment(string $field, int $by = 1, int $max = null) { @@ -569,7 +569,7 @@ abstract class ModelWithContent extends Model * @param array|null $data * @param string|null $languageCode * @param bool $overwrite - * @return self + * @return static */ public function save(array $data = null, string $languageCode = null, bool $overwrite = false) { @@ -585,7 +585,7 @@ abstract class ModelWithContent extends Model * * @param array|null $data * @param bool $overwrite - * @return self + * @return static */ protected function saveContent(array $data = null, bool $overwrite = false) { @@ -607,7 +607,7 @@ abstract class ModelWithContent extends Model * @param array|null $data * @param string|null $languageCode * @param bool $overwrite - * @return self + * @return static * @throws \Kirby\Exception\InvalidArgumentException If the language for the given code does not exist */ protected function saveTranslation(array $data = null, string $languageCode = null, bool $overwrite = false) @@ -653,7 +653,7 @@ abstract class ModelWithContent extends Model * Sets the Content object * * @param array|null $content - * @return self + * @return $this */ protected function setContent(array $content = null) { @@ -669,7 +669,7 @@ abstract class ModelWithContent extends Model * Create the translations collection from an array * * @param array|null $translations - * @return self + * @return $this */ protected function setTranslations(array $translations = null) { @@ -752,7 +752,7 @@ abstract class ModelWithContent extends Model * @param array|null $input * @param string|null $languageCode * @param bool $validate - * @return self + * @return static * @throws \Kirby\Exception\InvalidArgumentException If the input array contains invalid values */ public function update(array $input = null, string $languageCode = null, bool $validate = false) diff --git a/kirby/src/Cms/Page.php b/kirby/src/Cms/Page.php index d2c897f..d4a7e44 100755 --- a/kirby/src/Cms/Page.php +++ b/kirby/src/Cms/Page.php @@ -239,7 +239,7 @@ class Page extends ModelWithContent * @param string|null $inSection * @return array */ - public function blueprints(string $inSection = null): array + public function blueprints(?string $inSection = null): array { if ($inSection !== null) { return $this->blueprint()->section($inSection)->blueprints(); @@ -304,7 +304,7 @@ class Page extends ModelWithContent * @param string|null $languageCode * @return array */ - public function contentFileData(array $data, string $languageCode = null): array + public function contentFileData(array $data, ?string $languageCode = null): array { return A::prepend($data, [ 'title' => $data['title'] ?? null, @@ -320,7 +320,7 @@ class Page extends ModelWithContent * @param string|null $languageCode * @return string */ - public function contentFileName(string $languageCode = null): string + public function contentFileName(?string $languageCode = null): string { return $this->intendedTemplate()->name(); } @@ -466,7 +466,7 @@ class Page extends ModelWithContent * * @internal * @param mixed $props - * @return self + * @return static */ public static function factory($props) { @@ -885,7 +885,7 @@ class Page extends ModelWithContent * @internal * @param string $name * @param array $props - * @return self + * @return static */ public static function model(string $name, array $props = []) { @@ -1175,11 +1175,11 @@ class Page extends ModelWithContent $response = $kirby->response()->toArray(); // cache the result - if ($cache !== null) { + if ($cache !== null && $kirby->response()->cache() === true) { $cache->set($cacheId, [ 'html' => $html, 'response' => $response - ]); + ], $kirby->response()->expires() ?? 0); } } @@ -1244,7 +1244,7 @@ class Page extends ModelWithContent * Sets the Blueprint object * * @param array|null $blueprint - * @return self + * @return $this */ protected function setBlueprint(array $blueprint = null) { @@ -1262,7 +1262,7 @@ class Page extends ModelWithContent * than computing the dirname afterwards * * @param string|null $dirname - * @return self + * @return $this */ protected function setDirname(string $dirname = null) { @@ -1274,7 +1274,7 @@ class Page extends ModelWithContent * Sets the draft flag * * @param bool $isDraft - * @return self + * @return $this */ protected function setIsDraft(bool $isDraft = null) { @@ -1286,7 +1286,7 @@ class Page extends ModelWithContent * Sets the sorting number * * @param int|null $num - * @return self + * @return $this */ protected function setNum(int $num = null) { @@ -1298,7 +1298,7 @@ class Page extends ModelWithContent * Sets the parent page object * * @param \Kirby\Cms\Page|null $parent - * @return self + * @return $this */ protected function setParent(Page $parent = null) { @@ -1310,7 +1310,7 @@ class Page extends ModelWithContent * Sets the absolute path to the page * * @param string|null $root - * @return self + * @return $this */ protected function setRoot(string $root = null) { @@ -1322,7 +1322,7 @@ class Page extends ModelWithContent * Sets the required Page slug * * @param string $slug - * @return self + * @return $this */ protected function setSlug(string $slug) { @@ -1334,7 +1334,7 @@ class Page extends ModelWithContent * Sets the intended template * * @param string|null $template - * @return self + * @return $this */ protected function setTemplate(string $template = null) { @@ -1349,7 +1349,7 @@ class Page extends ModelWithContent * Sets the Url * * @param string|null $url - * @return self + * @return $this */ protected function setUrl(string $url = null) { diff --git a/kirby/src/Cms/PageActions.php b/kirby/src/Cms/PageActions.php index b87e1fe..5a41bc0 100755 --- a/kirby/src/Cms/PageActions.php +++ b/kirby/src/Cms/PageActions.php @@ -30,7 +30,7 @@ trait PageActions * siblings will not be resorted. * * @param int|null $num - * @return self + * @return $this|static * @throws \Kirby\Exception\LogicException If a draft is being sorted or the directory cannot be moved */ public function changeNum(int $num = null) @@ -77,7 +77,7 @@ trait PageActions * * @param string $slug * @param string|null $languageCode - * @return self + * @return $this|static * @throws \Kirby\Exception\LogicException If the directory cannot be moved */ public function changeSlug(string $slug, string $languageCode = null) @@ -141,7 +141,7 @@ trait PageActions * * @param string $slug * @param string|null $languageCode - * @return self + * @return static * @throws \Kirby\Exception\NotFoundException If the language for the given language code cannot be found * @throws \Kirby\Exception\InvalidArgumentException If the slug for the default language is being changed */ @@ -176,7 +176,7 @@ trait PageActions * * @param string $status "draft", "listed" or "unlisted" * @param int|null $position Optional sorting number - * @return self + * @return static * @throws \Kirby\Exception\InvalidArgumentException If an invalid status is being passed */ public function changeStatus(string $status, int $position = null) @@ -194,7 +194,7 @@ trait PageActions } /** - * @return self + * @return static */ protected function changeStatusToDraft() { @@ -208,7 +208,7 @@ trait PageActions /** * @param int|null $position - * @return self + * @return $this|static */ protected function changeStatusToListed(int $position = null) { @@ -233,7 +233,7 @@ trait PageActions } /** - * @return self + * @return $this|static */ protected function changeStatusToUnlisted() { @@ -257,7 +257,7 @@ trait PageActions * status isn't yet `listed`, it will be changed to it. * * @param int|null $position - * @return self + * @return $this|static */ public function changeSort(int $position = null) { @@ -268,7 +268,7 @@ trait PageActions * Changes the page template * * @param string $template - * @return self + * @return $this|static * @throws \Kirby\Exception\LogicException If the textfile cannot be renamed/moved */ public function changeTemplate(string $template) @@ -316,7 +316,7 @@ trait PageActions * * @param string $title * @param string|null $languageCode - * @return self + * @return static */ public function changeTitle(string $title, string $languageCode = null) { @@ -443,7 +443,7 @@ trait PageActions * Creates and stores a new page * * @param array $props - * @return self + * @return static */ public static function create(array $props) { @@ -498,7 +498,7 @@ trait PageActions * Creates a child of the current page * * @param array $props - * @return self + * @return static */ public function createChild(array $props) { @@ -655,7 +655,7 @@ trait PageActions } /** - * @return self + * @return $this|static * @throws \Kirby\Exception\LogicException If the folder cannot be moved */ public function publish() @@ -693,7 +693,7 @@ trait PageActions /** * Clean internal caches - * @return self + * @return $this */ public function purge() { @@ -788,9 +788,10 @@ trait PageActions /** * @deprecated 3.5.0 Use `Page::changeSort()` instead + * @todo Remove in 3.6.0 * * @param null $position - * @return self + * @return $this|static */ public function sort($position = null) { @@ -803,7 +804,7 @@ trait PageActions * Convert a page from listed or * unlisted to draft. * - * @return self + * @return $this|static * @throws \Kirby\Exception\LogicException If the folder cannot be moved */ public function unpublish() @@ -841,7 +842,7 @@ trait PageActions * @param array|null $input * @param string|null $languageCode * @param bool $validate - * @return self + * @return static */ public function update(array $input = null, string $languageCode = null, bool $validate = false) { diff --git a/kirby/src/Cms/PageRules.php b/kirby/src/Cms/PageRules.php index e9bf3a1..92d9f08 100755 --- a/kirby/src/Cms/PageRules.php +++ b/kirby/src/Cms/PageRules.php @@ -254,12 +254,6 @@ class PageRules */ public static function changeTitle(Page $page, string $title): bool { - if (Str::length($title) === 0) { - throw new InvalidArgumentException([ - 'key' => 'page.changeTitle.empty', - ]); - } - if ($page->permissions()->changeTitle() !== true) { throw new PermissionException([ 'key' => 'page.changeTitle.permission', @@ -269,6 +263,12 @@ class PageRules ]); } + if (Str::length($title) === 0) { + throw new InvalidArgumentException([ + 'key' => 'page.changeTitle.empty', + ]); + } + return true; } @@ -283,9 +283,12 @@ class PageRules */ public static function create(Page $page): bool { - if (Str::length($page->slug()) < 1) { - throw new InvalidArgumentException([ - 'key' => 'page.slug.invalid', + if ($page->permissions()->create() !== true) { + throw new PermissionException([ + 'key' => 'page.create.permission', + 'data' => [ + 'slug' => $page->slug() + ] ]); } @@ -300,15 +303,6 @@ class PageRules ]); } - if ($page->permissions()->create() !== true) { - throw new PermissionException([ - 'key' => 'page.create.permission', - 'data' => [ - 'slug' => $page->slug() - ] - ]); - } - $siblings = $page->parentModel()->children(); $drafts = $page->parentModel()->drafts(); $slug = $page->slug(); @@ -377,6 +371,8 @@ class PageRules ]); } + self::validateSlugLength($slug); + return true; } @@ -403,19 +399,27 @@ class PageRules } /** - * Ensures that the slug doesn't exceed the maximum length to make - * sure that the directory name will be accepted by the filesystem + * Ensures that the slug is not empty and doesn't exceed the maximum length + * to make sure that the directory name will be accepted by the filesystem * * @param string $slug New slug to check * @return void - * @throws \Kirby\Exception\InvalidArgumentException If the slug is too long + * @throws \Kirby\Exception\InvalidArgumentException If the slug is empty or too long */ protected static function validateSlugLength(string $slug): void { + $slugLength = Str::length($slug); + + if ($slugLength === 0) { + throw new InvalidArgumentException([ + 'key' => 'page.slug.invalid', + ]); + } + if ($slugsMaxlength = App::instance()->option('slugs.maxlength', 255)) { $maxlength = (int)$slugsMaxlength; - if (Str::length($slug) > $maxlength) { + if ($slugLength > $maxlength) { throw new InvalidArgumentException([ 'key' => 'page.slug.maxlength', 'data' => [ diff --git a/kirby/src/Cms/Pages.php b/kirby/src/Cms/Pages.php index f996f23..1f97af5 100755 --- a/kirby/src/Cms/Pages.php +++ b/kirby/src/Cms/Pages.php @@ -49,7 +49,7 @@ class Pages extends Collection * current collection * * @param mixed $object - * @return self + * @return $this * @throws \Kirby\Exception\InvalidArgumentException */ public function add($object) @@ -146,7 +146,7 @@ class Pages extends Collection * @param array $pages * @param \Kirby\Cms\Model|null $model * @param bool $draft - * @return self + * @return static */ public static function factory(array $pages, Model $model = null, bool $draft = false) { @@ -389,7 +389,7 @@ class Pages extends Collection * Include all given items in the collection * * @param mixed ...$args - * @return self + * @return $this|static */ public function merge(...$args) { diff --git a/kirby/src/Cms/Permissions.php b/kirby/src/Cms/Permissions.php index e44b827..1daac9e 100755 --- a/kirby/src/Cms/Permissions.php +++ b/kirby/src/Cms/Permissions.php @@ -153,7 +153,7 @@ class Permissions * @param string $category * @param string $action * @param $setting - * @return self + * @return $this */ protected function setAction(string $category, string $action, $setting) { @@ -169,7 +169,7 @@ class Permissions /** * @param bool $setting - * @return self + * @return $this */ protected function setAll(bool $setting) { @@ -182,7 +182,7 @@ class Permissions /** * @param array $settings - * @return self + * @return $this */ protected function setCategories(array $settings) { @@ -204,7 +204,7 @@ class Permissions /** * @param string $category * @param bool $setting - * @return self + * @return $this * @throws \Kirby\Exception\InvalidArgumentException */ protected function setCategory(string $category, bool $setting) diff --git a/kirby/src/Cms/Plugin.php b/kirby/src/Cms/Plugin.php index 1193ce0..d74c7ff 100755 --- a/kirby/src/Cms/Plugin.php +++ b/kirby/src/Cms/Plugin.php @@ -135,7 +135,7 @@ class Plugin extends Model /** * @param string $name - * @return self + * @return $this * @throws \Kirby\Exception\InvalidArgumentException */ protected function setName(string $name) diff --git a/kirby/src/Cms/Responder.php b/kirby/src/Cms/Responder.php index 3b91da7..01ccc82 100755 --- a/kirby/src/Cms/Responder.php +++ b/kirby/src/Cms/Responder.php @@ -2,6 +2,7 @@ namespace Kirby\Cms; +use Kirby\Exception\InvalidArgumentException; use Kirby\Toolkit\Mime; use Kirby\Toolkit\Str; @@ -16,6 +17,14 @@ use Kirby\Toolkit\Str; */ class Responder { + /** + * Timestamp when the response expires + * in Kirby's cache + * + * @var int|null + */ + protected $expires = null; + /** * HTTP status code * @@ -30,6 +39,14 @@ class Responder */ protected $body = null; + /** + * Flag that defines whether the current + * response can be cached by Kirby's cache + * + * @var string + */ + protected $cache = true; + /** * HTTP headers * @@ -58,7 +75,7 @@ class Responder * Setter and getter for the response body * * @param string|null $body - * @return string|self + * @return string|$this */ public function body(string $body = null) { @@ -70,11 +87,77 @@ class Responder return $this; } + /** + * Setter and getter for the flag that defines + * whether the current response can be cached + * by Kirby's cache + * + * @param bool|null $cache + * @return bool|$this + */ + public function cache(?bool $cache = null) + { + if ($cache === null) { + return $this->cache; + } + + $this->cache = $cache; + return $this; + } + + /** + * Setter and getter for the cache expiry + * timestamp for Kirby's cache + * + * @param int|string|null $expires Timestamp, number of minutes or time string to parse + * @param bool $override If `true`, the already defined timestamp will be overridden + * @return int|null|$this + */ + public function expires($expires = null, bool $override = false) + { + // getter + if ($expires === null && $override === false) { + return $this->expires; + } + + // explicit un-setter + if ($expires === null) { + $this->expires = null; + return $this; + } + + // normalize the value to an integer timestamp + if (is_int($expires) === true && $expires < 1000000000) { + // number of minutes + $expires = time() + ($expires * 60); + } elseif (is_int($expires) !== true) { + // time string + $parsedExpires = strtotime($expires); + + if (is_int($parsedExpires) !== true) { + throw new InvalidArgumentException('Invalid time string "' . $expires . '"'); + } + + $expires = $parsedExpires; + } + + // by default only ever *reduce* the cache expiry time + if ( + $override === true || + $this->expires === null || + $expires < $this->expires + ) { + $this->expires = $expires; + } + + return $this; + } + /** * Setter and getter for the status code * * @param int|null $code - * @return int|self + * @return int|$this */ public function code(int $code = null) { @@ -94,6 +177,7 @@ class Responder public function fromArray(array $response): void { $this->body($response['body'] ?? null); + $this->expires($response['expires'] ?? null); $this->code($response['code'] ?? null); $this->headers($response['headers'] ?? null); $this->type($response['type'] ?? null); @@ -104,9 +188,10 @@ class Responder * * @param string $key * @param string|false|null $value - * @return string|self + * @param bool $lazy If `true`, an existing header value is not overridden + * @return string|$this */ - public function header(string $key, $value = null) + public function header(string $key, $value = null, bool $lazy = false) { if ($value === null) { return $this->headers[$key] ?? null; @@ -117,6 +202,10 @@ class Responder return $this; } + if ($lazy === true && isset($this->headers[$key]) === true) { + return $this; + } + $this->headers[$key] = $value; return $this; } @@ -125,7 +214,7 @@ class Responder * Setter and getter for all headers * * @param array|null $headers - * @return array|self + * @return array|$this */ public function headers(array $headers = null) { @@ -141,7 +230,7 @@ class Responder * Shortcut to configure a json response * * @param array|null $json - * @return string|self + * @return string|$this */ public function json(array $json = null) { @@ -157,7 +246,7 @@ class Responder * * @param string|null $location * @param int|null $code - * @return self + * @return $this */ public function redirect(?string $location = null, ?int $code = null) { @@ -204,7 +293,7 @@ class Responder * Setter and getter for the content type * * @param string|null $type - * @return string|self + * @return string|$this */ public function type(string $type = null) { diff --git a/kirby/src/Cms/Response.php b/kirby/src/Cms/Response.php index 81b7f0d..7882867 100755 --- a/kirby/src/Cms/Response.php +++ b/kirby/src/Cms/Response.php @@ -21,7 +21,7 @@ class Response extends \Kirby\Http\Response * * @param string $location * @param int $code - * @return self + * @return static */ public static function redirect(string $location = '/', int $code = 302) { diff --git a/kirby/src/Cms/Role.php b/kirby/src/Cms/Role.php index 35a9a49..217d8b5 100755 --- a/kirby/src/Cms/Role.php +++ b/kirby/src/Cms/Role.php @@ -49,7 +49,7 @@ class Role extends Model /** * @param array $inject - * @return self + * @return static */ public static function admin(array $inject = []) { @@ -92,7 +92,7 @@ class Role extends Model /** * @param array $props * @param array $inject - * @return self + * @return static */ public static function factory(array $props, array $inject = []) { @@ -126,7 +126,7 @@ class Role extends Model /** * @param string $file * @param array $inject - * @return self + * @return static */ public static function load(string $file, array $inject = []) { @@ -146,7 +146,7 @@ class Role extends Model /** * @param array $inject - * @return self + * @return static */ public static function nobody(array $inject = []) { @@ -166,8 +166,8 @@ class Role extends Model } /** - * @param [type] $description - * @return self + * @param mixed $description + * @return $this */ protected function setDescription($description = null) { @@ -177,7 +177,7 @@ class Role extends Model /** * @param string $name - * @return self + * @return $this */ protected function setName(string $name) { @@ -186,8 +186,8 @@ class Role extends Model } /** - * @param [type] $permissions - * @return self + * @param mixed $permissions + * @return $this */ protected function setPermissions($permissions = null) { @@ -196,8 +196,8 @@ class Role extends Model } /** - * @param [type] $title - * @return self + * @param mixed $title + * @return $this */ protected function setTitle($title = null) { diff --git a/kirby/src/Cms/Roles.php b/kirby/src/Cms/Roles.php index 71ebef0..29a77e8 100755 --- a/kirby/src/Cms/Roles.php +++ b/kirby/src/Cms/Roles.php @@ -23,7 +23,7 @@ class Roles extends Collection * roles that can be created by the * current user * - * @return self + * @return $this|static * @throws \Exception */ public function canBeChanged() @@ -47,7 +47,7 @@ class Roles extends Collection * roles that can be created by the * current user * - * @return self + * @return $this|static * @throws \Exception */ public function canBeCreated() @@ -69,7 +69,7 @@ class Roles extends Collection /** * @param array $roles * @param array $inject - * @return self + * @return static */ public static function factory(array $roles, array $inject = []) { @@ -93,7 +93,7 @@ class Roles extends Collection /** * @param string|null $root * @param array $inject - * @return self + * @return static */ public static function load(string $root = null, array $inject = []) { diff --git a/kirby/src/Cms/Site.php b/kirby/src/Cms/Site.php index eab8597..650c053 100755 --- a/kirby/src/Cms/Site.php +++ b/kirby/src/Cms/Site.php @@ -30,14 +30,14 @@ class Site extends ModelWithContent /** * The SiteBlueprint object * - * @var SiteBlueprint + * @var \Kirby\Cms\SiteBlueprint */ protected $blueprint; /** * The error page object * - * @var Page + * @var \Kirby\Cms\Page */ protected $errorPage; @@ -52,7 +52,7 @@ class Site extends ModelWithContent /** * The home page object * - * @var Page + * @var \Kirby\Cms\Page */ protected $homePage; @@ -74,7 +74,7 @@ class Site extends ModelWithContent /** * The current page object * - * @var Page + * @var \Kirby\Cms\Page */ protected $page; @@ -142,7 +142,7 @@ class Site extends ModelWithContent /** * Makes it possible to convert the site model - * to a string. Mostly useful for debugging + * to a string. Mostly useful for debugging. * * @return string */ @@ -208,7 +208,7 @@ class Site extends ModelWithContent * @param string|null $languageCode * @return array */ - public function contentFileData(array $data, string $languageCode = null): array + public function contentFileData(array $data, ?string $languageCode = null): array { return A::prepend($data, [ 'title' => $data['title'] ?? null, @@ -360,11 +360,15 @@ class Site extends ModelWithContent * * @param string|null $format * @param string|null $handler - * @return mixed + * @return int|string */ - public function modified(string $format = null, string $handler = null) + public function modified(?string $format = null, ?string $handler = null) { - return Dir::modified($this->root(), $format, $handler ?? $this->kirby()->option('date.handler', 'date')); + return Dir::modified( + $this->root(), + $format, + $handler ?? $this->kirby()->option('date.handler', 'date') + ); } /** @@ -376,10 +380,11 @@ class Site extends ModelWithContent * prop, the home page will be returned if * it can be found. (see `Site::homePage()`) * - * @param string|null $path + * @param string|null $path omit for current page, + * otherwise e.g. `notes/across-the-ocean` * @return \Kirby\Cms\Page|null */ - public function page(string $path = null) + public function page(?string $path = null) { if ($path !== null) { return $this->find($path); @@ -496,7 +501,7 @@ class Site extends ModelWithContent * @param array $params * @return \Kirby\Cms\Pages */ - public function search(string $query = null, $params = []) + public function search(?string $query = null, $params = []) { return $this->index()->search($query, $params); } @@ -505,9 +510,9 @@ class Site extends ModelWithContent * Sets the Blueprint object * * @param array|null $blueprint - * @return self + * @return $this */ - protected function setBlueprint(array $blueprint = null) + protected function setBlueprint(?array $blueprint = null) { if ($blueprint !== null) { $blueprint['model'] = $this; @@ -524,7 +529,7 @@ class Site extends ModelWithContent * else is set. * * @param string $id - * @return self + * @return $this */ protected function setErrorPageId(string $id = 'error') { @@ -539,7 +544,7 @@ class Site extends ModelWithContent * else is set. * * @param string $id - * @return self + * @return $this */ protected function setHomePageId(string $id = 'home') { @@ -552,9 +557,9 @@ class Site extends ModelWithContent * * @internal * @param \Kirby\Cms\Page|null $page - * @return self + * @return $this */ - public function setPage(Page $page = null) + public function setPage(?Page $page = null) { $this->page = $page; return $this; @@ -564,7 +569,7 @@ class Site extends ModelWithContent * Sets the Url * * @param string|null $url - * @return self + * @return $this */ protected function setUrl($url = null) { @@ -615,7 +620,7 @@ class Site extends ModelWithContent * @param array|null $options * @return string */ - public function urlForLanguage(string $languageCode = null, array $options = null): string + public function urlForLanguage(?string $languageCode = null, ?array $options = null): string { if ($language = $this->kirby()->language($languageCode)) { return $language->url(); @@ -634,7 +639,7 @@ class Site extends ModelWithContent * @param string|null $languageCode * @return \Kirby\Cms\Page */ - public function visit($page, string $languageCode = null) + public function visit($page, ?string $languageCode = null) { if ($languageCode !== null) { $this->kirby()->setCurrentTranslation($languageCode); diff --git a/kirby/src/Cms/SiteActions.php b/kirby/src/Cms/SiteActions.php index f693d8e..4297f39 100755 --- a/kirby/src/Cms/SiteActions.php +++ b/kirby/src/Cms/SiteActions.php @@ -51,7 +51,7 @@ trait SiteActions * * @param string $title * @param string|null $languageCode - * @return self + * @return static */ public function changeTitle(string $title, string $languageCode = null) { @@ -82,7 +82,7 @@ trait SiteActions /** * Clean internal caches * - * @return self + * @return $this */ public function purge() { diff --git a/kirby/src/Cms/Structure.php b/kirby/src/Cms/Structure.php index 5050690..c947d17 100755 --- a/kirby/src/Cms/Structure.php +++ b/kirby/src/Cms/Structure.php @@ -23,7 +23,7 @@ class Structure extends Collection /** * Creates a new Collection with the given objects * - * @param array $objects + * @param array $objects Kirby\Cms\StructureObject` objects or props arrays * @param object|null $parent */ public function __construct($objects = [], $parent = null) diff --git a/kirby/src/Cms/StructureObject.php b/kirby/src/Cms/StructureObject.php index 5496f6f..a2cbeb7 100755 --- a/kirby/src/Cms/StructureObject.php +++ b/kirby/src/Cms/StructureObject.php @@ -35,7 +35,7 @@ class StructureObject extends Model protected $id; /** - * @var Page|Site|File|User + * @var \Kirby\Cms\Site|\Kirby\Cms\Page|\Kirby\Cms\File|\Kirby\Cms\User|null */ protected $parent; @@ -131,7 +131,7 @@ class StructureObject extends Model * Sets the Content object with the given parent * * @param array|null $content - * @return self + * @return $this */ protected function setContent(array $content = null) { @@ -146,7 +146,7 @@ class StructureObject extends Model * specified. * * @param string $id - * @return self + * @return $this */ protected function setId(string $id) { @@ -155,11 +155,10 @@ class StructureObject extends Model } /** - * Sets the parent Model. This can either be a - * Page, Site, File or User object + * Sets the parent Model * - * @param \Kirby\Cms\Model|null $parent - * @return self + * @return $this + * @param \Kirby\Cms\Site|\Kirby\Cms\Page|\Kirby\Cms\File|\Kirby\Cms\User|null $parent */ protected function setParent(Model $parent = null) { @@ -171,7 +170,7 @@ class StructureObject extends Model * Sets the parent Structure collection * * @param \Kirby\Cms\Structure|null $structure - * @return self + * @return $this */ protected function setStructure(Structure $structure = null) { diff --git a/kirby/src/Cms/System.php b/kirby/src/Cms/System.php index 0d8d38a..436a5b4 100755 --- a/kirby/src/Cms/System.php +++ b/kirby/src/Cms/System.php @@ -7,8 +7,6 @@ use Kirby\Exception\Exception; use Kirby\Exception\InvalidArgumentException; use Kirby\Exception\PermissionException; use Kirby\Http\Remote; -use Kirby\Http\Uri; -use Kirby\Http\Url; use Kirby\Toolkit\A; use Kirby\Toolkit\Dir; use Kirby\Toolkit\F; @@ -115,19 +113,7 @@ class System */ public function indexUrl(): string { - $url = $this->app->url('index'); - - if (Url::isAbsolute($url)) { - $uri = Url::toObject($url); - } else { - // index URL was configured without host, use the current host - $uri = Uri::current([ - 'path' => $url, - 'query' => null - ]); - } - - return $uri->setScheme(null)->setSlash(false)->toString(); + return $this->app->url('index', true)->setScheme(null)->setSlash(false)->toString(); } /** diff --git a/kirby/src/Cms/Translation.php b/kirby/src/Cms/Translation.php index b4b3a33..8efe6ff 100755 --- a/kirby/src/Cms/Translation.php +++ b/kirby/src/Cms/Translation.php @@ -139,15 +139,17 @@ class Translation * @param string $code * @param string $root * @param array $inject - * @return self + * @return static */ public static function load(string $code, string $root, array $inject = []) { try { - return new Translation($code, array_merge(Data::read($root), $inject)); + $data = array_merge(Data::read($root), $inject); } catch (Exception $e) { - return new Translation($code, []); + $data = []; } + + return new static($code, $data); } /** diff --git a/kirby/src/Cms/Translations.php b/kirby/src/Cms/Translations.php index d55ce61..9f018af 100755 --- a/kirby/src/Cms/Translations.php +++ b/kirby/src/Cms/Translations.php @@ -39,7 +39,7 @@ class Translations extends Collection /** * @param array $translations - * @return self + * @return static */ public static function factory(array $translations) { @@ -56,7 +56,7 @@ class Translations extends Collection /** * @param string $root * @param array $inject - * @return self + * @return static */ public static function load(string $root, array $inject = []) { diff --git a/kirby/src/Cms/User.php b/kirby/src/Cms/User.php index 223e134..219952f 100755 --- a/kirby/src/Cms/User.php +++ b/kirby/src/Cms/User.php @@ -254,7 +254,7 @@ class User extends ModelWithContent * * @internal * @param mixed $props - * @return self + * @return static */ public static function factory($props) { @@ -566,7 +566,7 @@ class User extends ModelWithContent * Create a dummy nobody * * @internal - * @return self + * @return static */ public static function nobody() { @@ -759,7 +759,7 @@ class User extends ModelWithContent * Sets the Blueprint object * * @param array|null $blueprint - * @return self + * @return $this */ protected function setBlueprint(array $blueprint = null) { @@ -775,7 +775,7 @@ class User extends ModelWithContent * Sets the user email * * @param string $email|null - * @return self + * @return $this */ protected function setEmail(string $email = null) { @@ -789,7 +789,7 @@ class User extends ModelWithContent * Sets the user id * * @param string $id|null - * @return self + * @return $this */ protected function setId(string $id = null) { @@ -801,7 +801,7 @@ class User extends ModelWithContent * Sets the user language * * @param string $language|null - * @return self + * @return $this */ protected function setLanguage(string $language = null) { @@ -813,7 +813,7 @@ class User extends ModelWithContent * Sets the user name * * @param string $name|null - * @return self + * @return $this */ protected function setName(string $name = null) { @@ -825,7 +825,7 @@ class User extends ModelWithContent * Sets the user's password hash * * @param string $password|null - * @return self + * @return $this */ protected function setPassword(string $password = null) { @@ -837,7 +837,7 @@ class User extends ModelWithContent * Sets the user role * * @param string $role|null - * @return self + * @return $this */ protected function setRole(string $role = null) { @@ -942,7 +942,7 @@ class User extends ModelWithContent } if (password_verify($password, $this->password()) !== true) { - throw new InvalidArgumentException(['key' => 'user.password.notSame']); + throw new InvalidArgumentException(['key' => 'user.password.wrong']); } return true; diff --git a/kirby/src/Cms/UserActions.php b/kirby/src/Cms/UserActions.php index 921b587..7343715 100755 --- a/kirby/src/Cms/UserActions.php +++ b/kirby/src/Cms/UserActions.php @@ -26,7 +26,7 @@ trait UserActions * Changes the user email address * * @param string $email - * @return self + * @return static */ public function changeEmail(string $email) { @@ -47,7 +47,7 @@ trait UserActions * Changes the user language * * @param string $language - * @return self + * @return static */ public function changeLanguage(string $language) { @@ -68,7 +68,7 @@ trait UserActions * Changes the screen name of the user * * @param string $name - * @return self + * @return static */ public function changeName(string $name) { @@ -89,7 +89,7 @@ trait UserActions * Changes the user password * * @param string $password - * @return self + * @return static */ public function changePassword(string $password) { @@ -108,7 +108,7 @@ trait UserActions * Changes the user role * * @param string $role - * @return self + * @return static */ public function changeRole(string $role) { @@ -172,7 +172,7 @@ trait UserActions * Creates a new User from the given props and returns a new User object * * @param array|null $props - * @return self + * @return static */ public static function create(array $props = null) { @@ -304,7 +304,7 @@ trait UserActions * @param array|null $input * @param string|null $languageCode * @param bool $validate - * @return self + * @return static */ public function update(array $input = null, string $languageCode = null, bool $validate = false) { diff --git a/kirby/src/Cms/Users.php b/kirby/src/Cms/Users.php index 3f0fa66..63b789b 100755 --- a/kirby/src/Cms/Users.php +++ b/kirby/src/Cms/Users.php @@ -38,7 +38,7 @@ class Users extends Collection * current collection * * @param mixed $object - * @return self + * @return $this */ public function add($object) { @@ -63,7 +63,7 @@ class Users extends Collection * * @param array $users * @param array $inject - * @return self + * @return static */ public static function factory(array $users, array $inject = []) { @@ -98,7 +98,7 @@ class Users extends Collection * * @param string $root * @param array $inject - * @return self + * @return static */ public static function load(string $root, array $inject = []) { @@ -131,7 +131,7 @@ class Users extends Collection * Shortcut for `$users->filter('role', 'admin')` * * @param string $role - * @return self + * @return static */ public function role(string $role) { diff --git a/kirby/src/Database/Database.php b/kirby/src/Database/Database.php index 34cbc73..74eacb5 100755 --- a/kirby/src/Database/Database.php +++ b/kirby/src/Database/Database.php @@ -157,7 +157,7 @@ class Database * Returns one of the started instances * * @param string|null $id - * @return self|null + * @return static|null */ public static function instance(string $id = null) { diff --git a/kirby/src/Database/Query.php b/kirby/src/Database/Query.php index 56f775f..f56d951 100755 --- a/kirby/src/Database/Query.php +++ b/kirby/src/Database/Query.php @@ -294,7 +294,7 @@ class Query * @param string $table Name of the table, which should be joined * @param string $on The on clause for this join * @param string $type The join type. Uses an inner join by default - * @return self + * @return $this */ public function join(string $table, string $on, string $type = 'JOIN') { diff --git a/kirby/src/Email/Body.php b/kirby/src/Email/Body.php index 2eeb05c..f047176 100755 --- a/kirby/src/Email/Body.php +++ b/kirby/src/Email/Body.php @@ -63,7 +63,7 @@ class Body * Sets the HTML content for the email body * * @param string|null $html - * @return self + * @return $this */ protected function setHtml(string $html = null) { @@ -75,7 +75,7 @@ class Body * Sets the plain text content for the email body * * @param string|null $text - * @return self + * @return $this */ protected function setText(string $text = null) { diff --git a/kirby/src/Email/Email.php b/kirby/src/Email/Email.php index 9a6afe2..fd20c9b 100755 --- a/kirby/src/Email/Email.php +++ b/kirby/src/Email/Email.php @@ -296,7 +296,7 @@ class Email * Sets the email attachments * * @param array|null $attachments - * @return self + * @return $this */ protected function setAttachments($attachments = null) { @@ -308,7 +308,7 @@ class Email * Sets the email body * * @param string|array $body - * @return self + * @return $this */ protected function setBody($body) { @@ -336,7 +336,7 @@ class Email * Sets the "beforeSend" callback * * @param \Closure|null $beforeSend - * @return self + * @return $this */ protected function setBeforeSend(?Closure $beforeSend = null) { @@ -348,7 +348,7 @@ class Email * Sets "cc" recipients * * @param string|array|null $cc - * @return self + * @return $this */ protected function setCc($cc = null) { @@ -360,7 +360,7 @@ class Email * Sets the "from" email address * * @param string $from - * @return self + * @return $this */ protected function setFrom(string $from) { @@ -372,7 +372,7 @@ class Email * Sets the "from" name * * @param string|null $fromName - * @return self + * @return $this */ protected function setFromName(string $fromName = null) { @@ -384,7 +384,7 @@ class Email * Sets the "reply to" email address * * @param string|null $replyTo - * @return self + * @return $this */ protected function setReplyTo(string $replyTo = null) { @@ -396,7 +396,7 @@ class Email * Sets the "reply to" name * * @param string|null $replyToName - * @return self + * @return $this */ protected function setReplyToName(string $replyToName = null) { @@ -408,7 +408,7 @@ class Email * Sets the email subject * * @param string $subject - * @return self + * @return $this */ protected function setSubject(string $subject) { @@ -420,7 +420,7 @@ class Email * Sets the recipients of the email * * @param string|array $to - * @return self + * @return $this */ protected function setTo($to) { @@ -432,7 +432,7 @@ class Email * Sets the email transport settings * * @param array|null $transport - * @return self + * @return $this */ protected function setTransport($transport = null) { diff --git a/kirby/src/Form/FieldClass.php b/kirby/src/Form/FieldClass.php index ccca00a..4b48fa5 100755 --- a/kirby/src/Form/FieldClass.php +++ b/kirby/src/Form/FieldClass.php @@ -92,7 +92,7 @@ abstract class FieldClass } /** - * DEPRECATED! + * @deprecated * * Returns the field data * in a format to be stored @@ -379,7 +379,7 @@ abstract class FieldClass } /** - * DEPRECATED + * @deprecated * * @return bool */ diff --git a/kirby/src/Form/Fields.php b/kirby/src/Form/Fields.php index c00129b..0ebb71b 100755 --- a/kirby/src/Form/Fields.php +++ b/kirby/src/Form/Fields.php @@ -23,7 +23,7 @@ class Fields extends Collection * * @param string $name * @param object|array $field - * @return self + * @return $this */ public function __set(string $name, $field) { diff --git a/kirby/src/Form/Options.php b/kirby/src/Form/Options.php index 0906897..748f0db 100755 --- a/kirby/src/Form/Options.php +++ b/kirby/src/Form/Options.php @@ -40,7 +40,7 @@ class Options * Brings options through api * * @param $api - * @param $model + * @param \Kirby\Cms\Model|null $model * @return array */ public static function api($api, $model = null): array @@ -71,7 +71,7 @@ class Options } /** - * @param $model + * @param \Kirby\Cms\Model $model * @return array */ protected static function data($model): array @@ -100,14 +100,14 @@ class Options * * @param $options * @param array $props - * @param null $model + * @param \Kirby\Cms\Model|null $model * @return array */ public static function factory($options, array $props = [], $model = null): array { switch ($options) { case 'api': - $options = static::api($props['api']); + $options = static::api($props['api'], $model); break; case 'query': $options = static::query($props['query'], $model); @@ -160,7 +160,7 @@ class Options * Brings options with query * * @param $query - * @param null $model + * @param \Kirby\Cms\Model|null $model * @return array */ public static function query($query, $model = null): array diff --git a/kirby/src/Form/OptionsApi.php b/kirby/src/Form/OptionsApi.php index f15f437..331e409 100755 --- a/kirby/src/Form/OptionsApi.php +++ b/kirby/src/Form/OptionsApi.php @@ -149,7 +149,7 @@ class OptionsApi /** * @param array $data - * @return self + * @return $this */ protected function setData(array $data) { @@ -159,7 +159,7 @@ class OptionsApi /** * @param string|null $fetch - * @return self + * @return $this */ protected function setFetch(string $fetch = null) { @@ -169,7 +169,7 @@ class OptionsApi /** * @param $options - * @return self + * @return $this */ protected function setOptions($options = null) { @@ -179,7 +179,7 @@ class OptionsApi /** * @param $text - * @return self + * @return $this */ protected function setText($text = null) { @@ -189,7 +189,7 @@ class OptionsApi /** * @param $url - * @return self + * @return $this */ protected function setUrl($url) { @@ -199,7 +199,7 @@ class OptionsApi /** * @param null $value - * @return self + * @return $this */ protected function setValue($value = null) { diff --git a/kirby/src/Form/OptionsQuery.php b/kirby/src/Form/OptionsQuery.php index 0709de1..b3bad6a 100755 --- a/kirby/src/Form/OptionsQuery.php +++ b/kirby/src/Form/OptionsQuery.php @@ -33,27 +33,27 @@ class OptionsQuery protected $aliases = []; /** - * @var + * @var array */ protected $data; /** - * @var + * @var array|string|null */ protected $options; /** - * @var + * @var string */ protected $query; /** - * @var + * @var mixed */ protected $text; /** - * @var + * @var mixed */ protected $value; @@ -190,9 +190,9 @@ class OptionsQuery /** * @param array|null $aliases - * @return self + * @return $this */ - protected function setAliases(array $aliases = null) + protected function setAliases(?array $aliases = null) { $this->aliases = $aliases; return $this; @@ -200,7 +200,7 @@ class OptionsQuery /** * @param array $data - * @return self + * @return $this */ protected function setData(array $data) { @@ -209,8 +209,8 @@ class OptionsQuery } /** - * @param $options - * @return self + * @param array|string|null $options + * @return $this */ protected function setOptions($options = null) { @@ -220,7 +220,7 @@ class OptionsQuery /** * @param string $query - * @return self + * @return $this */ protected function setQuery(string $query) { @@ -229,8 +229,8 @@ class OptionsQuery } /** - * @param $text - * @return self + * @param mixed $text + * @return $this */ protected function setText($text) { @@ -239,8 +239,8 @@ class OptionsQuery } /** - * @param $value - * @return self + * @param mixed $value + * @return $this */ protected function setValue($value) { diff --git a/kirby/src/Http/Remote.php b/kirby/src/Http/Remote.php index af1789f..31c1a99 100755 --- a/kirby/src/Http/Remote.php +++ b/kirby/src/Http/Remote.php @@ -149,7 +149,7 @@ class Remote /** * Sets up all curl options and sends the request * - * @return self + * @return $this */ public function fetch() { @@ -291,7 +291,7 @@ class Remote * * @param string $url * @param array $params - * @return self + * @return static */ public static function get(string $url, array $params = []) { @@ -385,7 +385,7 @@ class Remote * * @param string $url * @param array $params - * @return self + * @return static */ public static function request(string $url, array $params = []) { diff --git a/kirby/src/Http/Response.php b/kirby/src/Http/Response.php index 9279202..0172c6c 100755 --- a/kirby/src/Http/Response.php +++ b/kirby/src/Http/Response.php @@ -152,7 +152,7 @@ class Response * @param string $file * @param string $filename * @param array $props Custom overrides for response props (e.g. headers) - * @return self + * @return static */ public static function download(string $file, string $filename = null, array $props = []) { @@ -188,7 +188,7 @@ class Response * * @param string $file * @param array $props Custom overrides for response props (e.g. headers) - * @return self + * @return static */ public static function file(string $file, array $props = []) { @@ -229,7 +229,7 @@ class Response * @param int $code * @param bool $pretty * @param array $headers - * @return self + * @return static */ public static function json($body = '', ?int $code = null, ?bool $pretty = null, array $headers = []) { @@ -252,7 +252,7 @@ class Response * * @param string $location * @param int $code - * @return self + * @return static */ public static function redirect(string $location = '/', int $code = 302) { diff --git a/kirby/src/Http/Uri.php b/kirby/src/Http/Uri.php index 9a9cf7a..5ca547f 100755 --- a/kirby/src/Http/Uri.php +++ b/kirby/src/Http/Uri.php @@ -222,7 +222,7 @@ class Uri * new props. * * @param array $props - * @return self + * @return static */ public function clone(array $props = []) { @@ -238,7 +238,7 @@ class Uri /** * @param array $props * @param bool $forwarded - * @return self + * @return static */ public static function current(array $props = [], bool $forwarded = false) { @@ -316,7 +316,7 @@ class Uri * Tries to convert the internationalized host * name to the human-readable UTF8 representation * - * @return self + * @return $this */ public function idn() { @@ -374,7 +374,7 @@ class Uri /** * @param string|null $fragment - * @return self + * @return $this */ public function setFragment(string $fragment = null) { @@ -384,7 +384,7 @@ class Uri /** * @param string $host - * @return self + * @return $this */ public function setHost(string $host = null) { @@ -394,7 +394,7 @@ class Uri /** * @param \Kirby\Http\Params|string|array|null $params - * @return self + * @return $this */ public function setParams($params = null) { @@ -404,7 +404,7 @@ class Uri /** * @param string|null $password - * @return self + * @return $this */ public function setPassword(string $password = null) { @@ -414,7 +414,7 @@ class Uri /** * @param \Kirby\Http\Path|string|array|null $path - * @return self + * @return $this */ public function setPath($path = null) { @@ -424,7 +424,7 @@ class Uri /** * @param int|null $port - * @return self + * @return $this */ public function setPort(int $port = null) { @@ -444,7 +444,7 @@ class Uri /** * @param \Kirby\Http\Query|string|array|null $query - * @return self + * @return $this */ public function setQuery($query = null) { @@ -454,7 +454,7 @@ class Uri /** * @param string $scheme - * @return self + * @return $this */ public function setScheme(string $scheme = null) { @@ -471,7 +471,7 @@ class Uri * the path when the URI is being built * * @param bool $slash - * @return self + * @return $this */ public function setSlash(bool $slash = false) { @@ -481,7 +481,7 @@ class Uri /** * @param string|null $username - * @return self + * @return $this */ public function setUsername(string $username = null) { @@ -551,7 +551,7 @@ class Uri * Tries to convert a URL with an internationalized host * name to the machine-readable Punycode representation * - * @return self + * @return $this */ public function unIdn() { diff --git a/kirby/src/Image/Dimensions.php b/kirby/src/Image/Dimensions.php index de6e3f8..d4944db 100755 --- a/kirby/src/Image/Dimensions.php +++ b/kirby/src/Image/Dimensions.php @@ -67,7 +67,7 @@ class Dimensions * * @param int $width * @param int|null $height - * @return self + * @return $this */ public function crop(int $width, int $height = null) { @@ -110,7 +110,7 @@ class Dimensions * @param int $box the max width and/or height * @param bool $force If true, the dimensions will be * upscaled to fit the box if smaller - * @return self object with recalculated dimensions + * @return $this object with recalculated dimensions */ public function fit(int $box, bool $force = false) { @@ -162,7 +162,7 @@ class Dimensions * @param int|null $fit the max height * @param bool $force If true, the dimensions will be * upscaled to fit the box if smaller - * @return self object with recalculated dimensions + * @return $this object with recalculated dimensions */ public function fitHeight(int $fit = null, bool $force = false) { @@ -176,7 +176,7 @@ class Dimensions * @param int|null $fit the max width * @param bool $force If true, the dimensions will be * upscaled to fit the box if smaller - * @return self object with recalculated dimensions + * @return $this object with recalculated dimensions */ protected function fitSize(string $ref, int $fit = null, bool $force = false) { @@ -215,7 +215,7 @@ class Dimensions * @param int|null $fit the max width * @param bool $force If true, the dimensions will be * upscaled to fit the box if smaller - * @return self object with recalculated dimensions + * @return $this object with recalculated dimensions */ public function fitWidth(int $fit = null, bool $force = false) { @@ -228,7 +228,7 @@ class Dimensions * @param int|null $width the max height * @param int|null $height the max width * @param bool $force - * @return self + * @return $this */ public function fitWidthAndHeight(int $width = null, int $height = null, bool $force = false) { @@ -255,7 +255,7 @@ class Dimensions * Detect the dimensions for an image file * * @param string $root - * @return self + * @return static */ public static function forImage(string $root) { @@ -271,7 +271,7 @@ class Dimensions * Detect the dimensions for a svg file * * @param string $root - * @return self + * @return static */ public static function forSvg(string $root) { @@ -365,7 +365,7 @@ class Dimensions * @param int|null $width * @param int|null $height * @param bool $force - * @return self + * @return $this */ public function resize(int $width = null, int $height = null, bool $force = false) { @@ -386,7 +386,7 @@ class Dimensions * Resize and crop * * @param array $options - * @return self + * @return $this */ public function thumb(array $options = []) { diff --git a/kirby/src/Text/KirbyTag.php b/kirby/src/Text/KirbyTag.php index 495172c..b667e0b 100755 --- a/kirby/src/Text/KirbyTag.php +++ b/kirby/src/Text/KirbyTag.php @@ -79,7 +79,7 @@ class KirbyTag * @param string $string * @param array $data * @param array $options - * @return self + * @return static */ public static function parse(string $string, array $data = [], array $options = []) { diff --git a/kirby/src/Toolkit/Collection.php b/kirby/src/Toolkit/Collection.php index 31d1158..00e8b47 100755 --- a/kirby/src/Toolkit/Collection.php +++ b/kirby/src/Toolkit/Collection.php @@ -95,7 +95,7 @@ class Collection extends Iterator implements Countable * * @param string $key string or array * @param mixed $value - * @return \Kirby\Toolkit\Collection + * @return $this */ public function __set(string $key, $value) { @@ -134,7 +134,7 @@ class Collection extends Iterator implements Countable * @param mixed $key * @param mixed $item * @param mixed ...$args - * @return \Kirby\Toolkit\Collection + * @return $this */ public function append(...$args) { @@ -152,8 +152,8 @@ class Collection extends Iterator implements Countable * The last chunk may be smaller * * @param int $size Number of elements per chunk - * @return \Kirby\Toolkit\Collection A new collection with an element for each chunk and - * a sub collection in each chunk + * @return static A new collection with an element for each chunk and + * a sub collection in each chunk */ public function chunk(int $size) { @@ -183,7 +183,7 @@ class Collection extends Iterator implements Countable /** * Returns a cloned instance of the collection * - * @return \Kirby\Toolkit\Collection + * @return $this */ public function clone() { @@ -194,7 +194,7 @@ class Collection extends Iterator implements Countable * Getter and setter for the data * * @param array|null $data - * @return array|\Kirby\Toolkit\Collection + * @return array|$this */ public function data(array $data = null) { @@ -214,7 +214,7 @@ class Collection extends Iterator implements Countable /** * Clone and remove all elements from the collection * - * @return \Kirby\Toolkit\Collection + * @return static */ public function empty() { @@ -228,7 +228,7 @@ class Collection extends Iterator implements Countable * Adds all elements to the collection * * @param mixed $items - * @return \Kirby\Toolkit\Collection + * @return static */ public function extend($items) { @@ -243,7 +243,7 @@ class Collection extends Iterator implements Countable * * @param string|array|\Closure $field * @param mixed ...$args - * @return \Kirby\Toolkit\Collection + * @return static */ public function filter($field, ...$args) { @@ -323,7 +323,7 @@ class Collection extends Iterator implements Countable * * @param string|Closure $field * @param array ...$args - * @return self + * @return static */ public function filterBy(...$args) { @@ -452,7 +452,7 @@ class Collection extends Iterator implements Countable /** * Returns the elements in reverse order * - * @return \Kirby\Toolkit\Collection + * @return static */ public function flip() { @@ -525,7 +525,9 @@ class Collection extends Iterator implements Countable * * @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 + * @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($field, bool $i = true) @@ -586,7 +588,9 @@ class Collection extends Iterator implements Countable * * @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 + * @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(...$args) @@ -599,7 +603,7 @@ class Collection extends Iterator implements Countable * @since 3.3.0 * * @param \Kirby\Toolkit\Collection $other - * @return \Kirby\Toolkit\Collection + * @return static */ public function intersection($other) { @@ -679,7 +683,7 @@ class Collection extends Iterator implements Countable * Returns a new object with a limited number of elements * * @param int $limit The number of elements to return - * @return \Kirby\Toolkit\Collection + * @return static */ public function limit(int $limit) { @@ -690,7 +694,7 @@ class Collection extends Iterator implements Countable * Map a function to each element * * @param callable $callback - * @return \Kirby\Toolkit\Collection + * @return $this */ public function map(callable $callback) { @@ -713,7 +717,7 @@ class Collection extends Iterator implements Countable * Returns a Collection without the given element(s) * * @param string ...$keys any number of keys, passed as individual arguments - * @return \Kirby\Toolkit\Collection + * @return static */ public function not(...$keys) { @@ -728,7 +732,7 @@ class Collection extends Iterator implements Countable * Returns a new object starting from the given offset * * @param int $offset The index to start from - * @return \Kirby\Toolkit\Collection + * @return static */ public function offset(int $offset) { @@ -739,7 +743,7 @@ class Collection extends Iterator implements Countable * Add pagination * * @param array ...$arguments - * @return \Kirby\Toolkit\Collection a sliced set of data + * @return static a sliced set of data */ public function paginate(...$arguments) { @@ -795,7 +799,7 @@ class Collection extends Iterator implements Countable * @param mixed $key * @param mixed $item * @param mixed ...$args - * @return \Kirby\Toolkit\Collection + * @return $this */ public function prepend(...$args) { @@ -817,7 +821,7 @@ class Collection extends Iterator implements Countable * Any part of the query is optional. * * @param array $arguments - * @return \Kirby\Toolkit\Collection + * @return static */ public function query(array $arguments = []) { @@ -875,7 +879,7 @@ class Collection extends Iterator implements Countable * Removes an element from the array by key * * @param mixed $key the name of the key - * @return \Kirby\Toolkit\Collection + * @return $this */ public function remove($key) { @@ -888,7 +892,7 @@ class Collection extends Iterator implements Countable * * @param mixed $key string or array * @param mixed $value - * @return \Kirby\Toolkit\Collection + * @return $this */ public function set($key, $value = null) { @@ -905,7 +909,7 @@ class Collection extends Iterator implements Countable /** * Shuffle all elements * - * @return \Kirby\Toolkit\Collection + * @return static */ public function shuffle() { @@ -928,7 +932,7 @@ class Collection extends Iterator implements Countable * * @param int $offset The optional index to start the slice from * @param int|null $limit The optional number of elements to return - * @return \Kirby\Toolkit\Collection + * @return $this|static */ public function slice(int $offset = 0, int $limit = null) { @@ -972,7 +976,7 @@ class Collection extends Iterator implements Countable * @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 \Kirby\Toolkit\Collection + * @return $this|static */ public function sort() { @@ -1088,7 +1092,7 @@ class Collection extends Iterator implements Countable * @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 + * @return $this|static */ public function sortBy(...$args) { @@ -1170,7 +1174,7 @@ class Collection extends Iterator implements Countable * Alias for $this->not() * * @param string ...$keys any number of keys, passed as individual arguments - * @return \Kirby\Toolkit\Collection + * @return static */ public function without(...$keys) { diff --git a/kirby/src/Toolkit/Dir.php b/kirby/src/Toolkit/Dir.php index 7b57c62..1a385d2 100755 --- a/kirby/src/Toolkit/Dir.php +++ b/kirby/src/Toolkit/Dir.php @@ -69,7 +69,7 @@ class Dir if (is_dir($root) === true) { if ($recursive === true) { - static::copy($root, $target . '/' . $name); + static::copy($root, $target . '/' . $name, true, $ignore); } } else { F::copy($root, $target . '/' . $name); @@ -254,7 +254,7 @@ class Dir * @param string $dir The path of the directory * @param string $format * @param string $handler - * @return int + * @return int|string */ public static function modified(string $dir, string $format = null, string $handler = 'date') { diff --git a/kirby/src/Toolkit/Escape.php b/kirby/src/Toolkit/Escape.php index 5b6ebcd..6a0f053 100755 --- a/kirby/src/Toolkit/Escape.php +++ b/kirby/src/Toolkit/Escape.php @@ -23,6 +23,13 @@ use Laminas\Escaper\Escaper; */ class Escape { + /** + * The internal singleton escaper instance + * + * @var \Laminas\Escaper\Escaper + */ + protected static $escaper; + /** * Escape common HTML attributes data * @@ -43,7 +50,7 @@ class Escape */ public static function attr($string) { - return (new Escaper('utf-8'))->escapeHtmlAttr($string); + return static::escaper()->escapeHtmlAttr($string); } /** @@ -64,7 +71,17 @@ class Escape */ public static function css($string) { - return (new Escaper('utf-8'))->escapeCss($string); + return static::escaper()->escapeCss($string); + } + + /** + * Get the escaper instance (and create if needed) + * + * @return \Laminas\Escaper\Escaper + */ + protected static function escaper() + { + return static::$escaper = static::$escaper ?? new Escaper('utf-8'); } /** @@ -84,7 +101,7 @@ class Escape */ public static function html($string) { - return (new Escaper('utf-8'))->escapeHtml($string); + return static::escaper()->escapeHtml($string); } /** @@ -102,7 +119,7 @@ class Escape */ public static function js($string) { - return (new Escaper('utf-8'))->escapeJs($string); + return static::escaper()->escapeJs($string); } /** diff --git a/kirby/src/Toolkit/F.php b/kirby/src/Toolkit/F.php index c05303e..9d6185d 100755 --- a/kirby/src/Toolkit/F.php +++ b/kirby/src/Toolkit/F.php @@ -81,7 +81,6 @@ class F 'jpeg', 'jpg', 'jpe', - 'jp2', 'png', 'ps', 'psd', diff --git a/kirby/src/Toolkit/File.php b/kirby/src/Toolkit/File.php index 619fbaf..16ffbfb 100755 --- a/kirby/src/Toolkit/File.php +++ b/kirby/src/Toolkit/File.php @@ -59,7 +59,7 @@ class File * * @param string $target * @param bool $force - * @return self + * @return static */ public function copy(string $target, bool $force = false) { @@ -197,7 +197,7 @@ class File * * @param string $newRoot * @param bool $overwrite Force overwriting any existing files - * @return self + * @return static */ public function move(string $newRoot, bool $overwrite = false) { @@ -256,7 +256,7 @@ class File * * @param string $newName * @param bool $overwrite Force overwrite existing files - * @return self + * @return static */ public function rename(string $newName, bool $overwrite = false) { diff --git a/kirby/src/Toolkit/I18n.php b/kirby/src/Toolkit/I18n.php index ec9206b..a0d6464 100755 --- a/kirby/src/Toolkit/I18n.php +++ b/kirby/src/Toolkit/I18n.php @@ -55,7 +55,9 @@ class I18n /** * Returns the first fallback locale * - * @deprecated 3.5.1 Use \Kirby\Toolkit\I18n::fallbacks() instead + * @deprecated 3.5.1 Use `\Kirby\Toolkit\I18n::fallbacks()` instead + * @todo Add deprecated() helper warning in 3.6.0 + * @todo Remove in 3.7.0 * * @return string */ diff --git a/kirby/src/Toolkit/Pagination.php b/kirby/src/Toolkit/Pagination.php index 33a239c..9509419 100755 --- a/kirby/src/Toolkit/Pagination.php +++ b/kirby/src/Toolkit/Pagination.php @@ -66,7 +66,7 @@ class Pagination * * @param \Kirby\Toolkit\Collection $collection * @param mixed ...$arguments - * @return self + * @return static */ public static function for(Collection $collection, ...$arguments) { @@ -380,7 +380,7 @@ class Pagination * and validates that the properties match * * @param array $props Array with keys limit, total and/or page - * @return self + * @return $this */ protected function setProperties(array $props) { @@ -417,7 +417,7 @@ class Pagination * Sets the number of items per page * * @param int $limit - * @return self + * @return $this */ protected function setLimit(int $limit = 20) { @@ -433,7 +433,7 @@ class Pagination * Sets the total number of items * * @param int $total - * @return self + * @return $this */ protected function setTotal(int $total = 0) { @@ -450,7 +450,7 @@ class Pagination * * @param int|string|null $page Int or int in string form; * automatically determined if null - * @return self + * @return $this */ protected function setPage($page = null) { diff --git a/kirby/src/Toolkit/Properties.php b/kirby/src/Toolkit/Properties.php index 52c356b..7d90529 100755 --- a/kirby/src/Toolkit/Properties.php +++ b/kirby/src/Toolkit/Properties.php @@ -23,7 +23,7 @@ trait Properties * initial properties. * * @param array $props - * @return self + * @return static */ public function clone(array $props = []) { @@ -34,7 +34,7 @@ trait Properties * Creates a clone and fetches all * lazy-loaded getters to get a full copy * - * @return self + * @return static */ public function hardcopy() { diff --git a/kirby/vendor/claviska/simpleimage/src/claviska/SimpleImage.php b/kirby/vendor/claviska/simpleimage/src/claviska/SimpleImage.php index 68f1dfc..52cabc2 100755 --- a/kirby/vendor/claviska/simpleimage/src/claviska/SimpleImage.php +++ b/kirby/vendor/claviska/simpleimage/src/claviska/SimpleImage.php @@ -69,7 +69,10 @@ class SimpleImage { * Destroys the image resource. */ public function __destruct() { - if($this->image !== null && is_resource($this->image) && get_resource_type($this->image) === 'gd') { + //Check for a valid GDimage instance + $type_check = (gettype($this->image) == "object" && get_class($this->image) == "GdImage"); + + if($this->image !== null && is_resource($this->image) && $type_check) { imagedestroy($this->image); } } @@ -128,7 +131,7 @@ class SimpleImage { fclose($handle); // Get image info - $info = getimagesize($file); + $info = @getimagesize($file); if($info === false) { throw new \Exception("Invalid image file: $file", self::ERR_INVALID_IMAGE); } @@ -587,13 +590,27 @@ class SimpleImage { $y1 = self::keepWithin($y1, 0, $this->getHeight()); $y2 = self::keepWithin($y2, 0, $this->getHeight()); + // Avoid using native imagecrop() because of a bug with PNG transparency + $dstW = abs($x2 - $x1); + $dstH = abs($y2 - $y1); + $newImage = imagecreatetruecolor($dstW, $dstH); + $transparentColor = imagecolorallocatealpha($newImage, 0, 0, 0, 127); + imagecolortransparent($newImage, $transparentColor); + imagefill($newImage, 0, 0, $transparentColor); + // Crop it - $this->image = imagecrop($this->image, [ - 'x' => min($x1, $x2), - 'y' => min($y1, $y2), - 'width' => abs($x2 - $x1), - 'height' => abs($y2 - $y1) - ]); + imagecopyresampled( + $newImage, + $this->image, + 0, 0, min($x1, $x2), min($y1, $y2), + $dstW, + $dstH, + $dstW, + $dstH + ); + + // Swap out the new image + $this->image = $newImage; return $this; } @@ -708,10 +725,10 @@ class SimpleImage { * @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). + * @param bool $calculateOffsetFromEdge 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) { + public function overlay($overlay, $anchor = 'center', $opacity = 1, $xOffset = 0, $yOffset = 0, $calculateOffsetFromEdge = false) { // Load overlay image if(!($overlay instanceof SimpleImage)) $overlay = new SimpleImage($overlay); @@ -723,21 +740,21 @@ class SimpleImage { $spaceY = $this->getHeight() - $overlay->getHeight(); // Set default center - $x = ($spaceX / 2) + ($calcuateOffsetFromEdge ? 0 : $xOffset); - $y = ($spaceY / 2) + ($calcuateOffsetFromEdge ? 0 : $yOffset); + $x = ($spaceX / 2) + ($calculateOffsetFromEdge ? 0 : $xOffset); + $y = ($spaceY / 2) + ($calculateOffsetFromEdge ? 0 : $yOffset); // Determine if top|bottom if (strpos($anchor, 'top') !== false) { $y = $yOffset; } elseif (strpos($anchor, 'bottom') !== false) { - $y = $spaceY + ($calcuateOffsetFromEdge ? -$yOffset : $yOffset); + $y = $spaceY + ($calculateOffsetFromEdge ? -$yOffset : $yOffset); } // Determine if left|right if (strpos($anchor, 'left') !== false) { $x = $xOffset; } elseif (strpos($anchor, 'right') !== false) { - $x = $spaceX + ($calcuateOffsetFromEdge ? -$xOffset : $xOffset); + $x = $spaceX + ($calculateOffsetFromEdge ? -$xOffset : $xOffset); } // Perform the overlay @@ -859,7 +876,7 @@ class SimpleImage { * - 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). + * - $calculateOffsetFromEdge (bool) - Calculate offsets from the edge 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]. @@ -885,7 +902,7 @@ class SimpleImage { 'xOffset' => 0, 'yOffset' => 0, 'shadow' => null, - 'calcuateOffsetFromEdge' => false, + 'calculateOffsetFromEdge' => false, 'baselineAlign' => true ], $options); @@ -896,7 +913,7 @@ class SimpleImage { $anchor = $options['anchor']; $xOffset = $options['xOffset']; $yOffset = $options['yOffset']; - $calcuateOffsetFromEdge = $options['calcuateOffsetFromEdge']; + $calculateOffsetFromEdge = $options['calculateOffsetFromEdge']; $baselineAlign = $options['baselineAlign']; $angle = 0; @@ -921,31 +938,31 @@ class SimpleImage { // Calculate Offset referring to the edges of the image. // Just invert the value for bottom|right; - if ($calcuateOffsetFromEdge == true): + if ($calculateOffsetFromEdge == 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): + 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): + if (strpos($anchor, 'bottom') !== false) { $yOffset -= $boxFull[1]; - elseif (strpos($anchor, 'top') !== false): + } elseif (strpos($anchor, 'top') !== false) { $yOffset += abs($boxFull[5]) - $boxHeight; - else: // center + } else { // center $boxFullHeight = abs($boxFull[1]) + abs($boxFull[5]); $yOffset += ($boxFullHeight/2) - ($boxHeight/2) - abs($boxFull[1]); - endif; + } - else: + } 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. @@ -953,42 +970,42 @@ class SimpleImage { // Determine position switch($anchor) { - case 'top left': - $x = $xOffset; - $y = $yOffset + $boxHeight; - break; - case 'top right': - $x = $this->getWidth() - $boxWidth + $xOffset; - $y = $yOffset + $boxHeight; - break; - case 'top': - $x = ($this->getWidth() / 2) - ($boxWidth / 2) + $xOffset; - $y = $yOffset + $boxHeight; - break; - case 'bottom left': - $x = $xOffset; - $y = $this->getHeight() + $yOffset ; - break; - case 'bottom right': - $x = $this->getWidth() - $boxWidth + $xOffset; - $y = $this->getHeight() + $yOffset; - break; - case 'bottom': - $x = ($this->getWidth() / 2) - ($boxWidth / 2) + $xOffset; - $y = $this->getHeight() + $yOffset; - break; - case 'left': - $x = $xOffset; - $y = ($this->getHeight() / 2) - (($boxHeight / 2) - $boxHeight) + $yOffset; - break; - case 'right'; - $x = $this->getWidth() - $boxWidth + $xOffset; - $y = ($this->getHeight() / 2) - (($boxHeight / 2) - $boxHeight) + $yOffset; - break; - default: // center - $x = ($this->getWidth() / 2) - ($boxWidth / 2) + $xOffset; - $y = ($this->getHeight() / 2) - (($boxHeight / 2) - $boxHeight) + $yOffset; - break; + case 'top left': + $x = $xOffset; + $y = $yOffset + $boxHeight; + break; + case 'top right': + $x = $this->getWidth() - $boxWidth + $xOffset; + $y = $yOffset + $boxHeight; + break; + case 'top': + $x = ($this->getWidth() / 2) - ($boxWidth / 2) + $xOffset; + $y = $yOffset + $boxHeight; + break; + case 'bottom left': + $x = $xOffset; + $y = $this->getHeight() + $yOffset ; + break; + case 'bottom right': + $x = $this->getWidth() - $boxWidth + $xOffset; + $y = $this->getHeight() + $yOffset; + break; + case 'bottom': + $x = ($this->getWidth() / 2) - ($boxWidth / 2) + $xOffset; + $y = $this->getHeight() + $yOffset; + break; + case 'left': + $x = $xOffset; + $y = ($this->getHeight() / 2) - (($boxHeight / 2) - $boxHeight) + $yOffset; + break; + case 'right'; + $x = $this->getWidth() - $boxWidth + $xOffset; + $y = ($this->getHeight() / 2) - (($boxHeight / 2) - $boxHeight) + $yOffset; + break; + default: // center + $x = ($this->getWidth() / 2) - ($boxWidth / 2) + $xOffset; + $y = ($this->getHeight() / 2) - (($boxHeight / 2) - $boxHeight) + $yOffset; + break; } $x = (int) round($x); $y = (int) round($y); @@ -1023,6 +1040,222 @@ class SimpleImage { return $this; } + /** + * Adds text with a line break 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). Has no effect when anchor is 'center'. + * - yOffset (integer) - The vertical offset in pixels (default 0). Has no effect when anchor is 'center'. + * - shadow (array) - Text shadow params. + * - x* (integer) - Horizontal offset in pixels. + * - y* (integer) - Vertical offset in pixels. + * - color* (string|array) - The text shadow color. + * - $calculateOffsetFromEdge (bool) - Calculate offsets from the edge of the image (default false). + * - width (int) - Width of text box (default image width). + * - align (string) - How to align text: 'left', 'right', 'center', 'justify' (default 'left'). + * - leading (float) - Increase/decrease spacing between lines of text (default 0). + * - opacity (float) - The opacity level of the text 0-1 (default 1). + * @throws \Exception + * @return \claviska\SimpleImage + */ + public function textBox($text, $options) { + // default width of image + $maxWidth = $this->getWidth(); + // Default options + $options = array_merge([ + 'fontFile' => null, + 'size' => 12, + 'color' => 'black', + 'anchor' => 'center', + 'xOffset' => 0, + 'yOffset' => 0, + 'shadow' => null, + 'calculateOffsetFromEdge' => false, + 'width' => $maxWidth, + 'align' => 'left', + 'leading' => 0, + 'opacity' => 1 + ], $options); + + // Extract and normalize options + $fontFile = $options['fontFile']; + $fontSize = $fontSizePx = $options['size']; + $fontSize = ($fontSize / 96) * 72; // Convert px to pt (72pt per inch, 96px per inch) + $color = $options['color']; + $anchor = $options['anchor']; + $xOffset = $options['xOffset']; + $yOffset = $options['yOffset']; + $shadow = $options['shadow']; + $calculateOffsetFromEdge = $options['calculateOffsetFromEdge']; + $angle = 0; + $maxWidth = $options['width']; + $leading = $options['leading']; + $leading = self::keepWithin($leading, ($fontSizePx * -1), $leading); + $opacity = $options['opacity']; + + $align = $options['align']; + if ($align == 'right') { + $align = 'top right'; + } elseif ($align == 'center') { + $align = 'top'; + } elseif ($align == 'justify') { + $align = 'justify'; + } else { + $align = 'top left'; + } + + list($lines, $isLastLine, $lastLineHeight) = self::textSeparateLines($text, $fontFile, $fontSize, $maxWidth); + + $maxHeight = (count($lines) - 1) * ($fontSizePx * 1.2 + $leading) + $lastLineHeight; + + $imageText = new SimpleImage(); + $imageText->fromNew($maxWidth, $maxHeight); + + // Align left/center/right + if ($align <> 'justify') { + foreach ($lines as $key => $line) { + if( $align == 'top' ) $line = trim($line); // If is justify = 'center' + $imageText->text($line, array( + 'fontFile' => $fontFile, + 'size' => $fontSizePx, + 'color' => $color, + 'anchor' => $align, + 'xOffset' => 0, + 'yOffset' => $key * ($fontSizePx * 1.2 + $leading), + 'shadow' => $shadow, + 'calculateOffsetFromEdge' => true + )); + } + + // Justify + } else { + foreach ($lines as $keyLine => $line) { + // Check if there are spaces at the beginning of the sentence + $spaces = 0; + if (preg_match("/^\s+/", $line, $match)) { + // Count spaces + $spaces = strlen($match[0]); + $line = ltrim($line); + } + + // Separate words + $words = preg_split("/\s+/", $line); + // Include spaces with the first word + $words[0] = str_repeat(' ', $spaces) . $words[0]; + + // Calculates the space occupied by all words + $wordsSize = array(); + foreach ($words as $key => $word) { + $wordBox = imagettfbbox($fontSize, 0, $fontFile, $word); + $wordWidth = abs($wordBox[4] - $wordBox[0]); + $wordsSize[$key] = $wordWidth; + } + $wordsSizeTotal = array_sum($wordsSize); + + // Calculates the required space between words + $countWords = count($words); + $wordSpacing = 0; + if ($countWords > 1) { + $wordSpacing = ($maxWidth - $wordsSizeTotal) / ($countWords - 1); + $wordSpacing = round($wordSpacing, 3); + } + + $xOffsetJustify = 0; + foreach ($words as $key => $word) { + if ($isLastLine[$keyLine] == true) { + if ($key < (count($words) - 1)) continue; + $word = $line; + } + $imageText->text($word, array( + 'fontFile' => $fontFile, + 'size' => $fontSizePx, + 'color' => $color, + 'anchor' => 'top left', + 'xOffset' => $xOffsetJustify, + 'yOffset' => $keyLine * ($fontSizePx * 1.2 + $leading), + 'shadow' => $shadow, + 'calculateOffsetFromEdge' => true, + ) + ); + // Calculate offset for next word + $xOffsetJustify += $wordsSize[$key] + $wordSpacing; + } + } + } + + $this->overlay($imageText, $anchor, $opacity, $xOffset, $yOffset, $calculateOffsetFromEdge); + + return $this; + } + + /** + * Receives a text and breaks into LINES. + * + * @param integer $text + * @param string $fontFile + * @param int $fontSize + * @param int $maxWidth + * @return array + */ + private function textSeparateLines($text, $fontFile, $fontSize, $maxWidth) { + $words = self::textSeparateWords($text); + $countWords = count($words) - 1; + $lines[0] = ''; + $lineKey = 0; + $isLastLine = []; + for ($i = 0; $i < $countWords; $i++) { + $word = $words[$i]; + $isLastLine[$lineKey] = false; + if ($word === PHP_EOL) { + $isLastLine[$lineKey] = true; + $lineKey++; + $lines[$lineKey] = ''; + continue; + } + $lineBox = imagettfbbox($fontSize, 0, $fontFile, $lines[$lineKey] . $word); + if (abs($lineBox[4] - $lineBox[0]) < $maxWidth) { + $lines[$lineKey] .= $word . ' '; + } else { + $lineKey++; + $lines[$lineKey] = $word . ' '; + } + } + $isLastLine[$lineKey] = true; + // Exclude space of right + $lines = array_map('rtrim', $lines); + // Calculate height of last line + $boxFull = imagettfbbox($fontSize, 0, $fontFile, 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890'); + $lineBox = imagettfbbox($fontSize, 0, $fontFile, $lines[$lineKey]); + // Height of last line = ascender of $boxFull + descender of $lineBox + $lastLineHeight = abs($lineBox[1]) + abs($boxFull[5]); + + return array($lines, $isLastLine, $lastLineHeight); + } + + /** + * Receives a text and breaks into WORD / SPACE / NEW LINE. + * + * @param integer $text + * @return array + */ + private function textSeparateWords($text) { + // Normalizes line break + $text = preg_replace('/(\r\n|\n|\r)/', PHP_EOL, $text); + $text = explode(PHP_EOL, $text); + $newText = array(); + foreach ($text as $key => $line) { + $newText = array_merge($newText, explode(' ', $line), [PHP_EOL]); + } + + return $newText; + } + /** * 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 @@ -1125,15 +1358,35 @@ class SimpleImage { */ public function arc($x, $y, $width, $height, $start, $end, $color, $thickness = 1) { // Allocate the color - $color = $this->allocateColor($color); + $tempColor = $this->allocateColor($color); + imagesetthickness($this->image, 1); // Draw an arc if($thickness === 'filled') { - imagesetthickness($this->image, 1); - imagefilledarc($this->image, $x, $y, $width, $height, $start, $end, $color, IMG_ARC_PIE); + imagefilledarc($this->image, $x, $y, $width, $height, $start, $end, $tempColor, IMG_ARC_PIE); + + } else if ($thickness === 1) { + imagearc($this->image, $x, $y, $width, $height, $start, $end, $tempColor); + } else { - imagesetthickness($this->image, $thickness); - imagearc($this->image, $x, $y, $width, $height, $start, $end, $color); + // New temp image + $tempImage = new SimpleImage(); + $tempImage->fromNew($this->getWidth(), $this->getHeight(), 'transparent'); + + // Draw a large ellipse filled with $color (+$thickness pixels) + $tempColor = $tempImage->allocateColor($color); + imagefilledarc($tempImage->image, $x, $y, $width+$thickness, $height+$thickness, $start, $end, $tempColor, IMG_ARC_PIE); + + // Draw a smaller ellipse filled with red|blue (-$thickness pixels) + $tempColor = (self::normalizeColor($color)['red'] == 255) ? 'blue' : 'red'; + $tempColor = $tempImage->allocateColor($tempColor); + imagefilledarc($tempImage->image, $x, $y, $width-$thickness, $height-$thickness, $start, $end, $tempColor, IMG_ARC_PIE); + + // Replace the color of the smaller ellipse with 'transparent' + $tempImage->excludeInsideColor($x, $y, $color); + + // Apply the temp image + $this->overlay($tempImage); } return $this; @@ -1147,15 +1400,14 @@ class SimpleImage { * @return \claviska\SimpleImage */ public function border($color, $thickness = 1) { - $x1 = 0; + $x1 = -1; $y1 = 0; - $x2 = $this->getWidth() - 1; - $y2 = $this->getHeight() - 1; + $x2 = $this->getWidth(); + $y2 = $this->getHeight()-1; - // Draw a border rectangle until it reaches the correct width - for($i = 0; $i < $thickness; $i++) { - $this->rectangle($x1++, $y1++, $x2--, $y2--, $color); - } + $color = $this->allocateColor($color); + imagesetthickness($this->image, $thickness*2); + imagerectangle($this->image, $x1, $y1, $x2, $y2, $color); return $this; } @@ -1188,19 +1440,35 @@ class SimpleImage { */ public function ellipse($x, $y, $width, $height, $color, $thickness = 1) { // Allocate the color - $color = $this->allocateColor($color); + $tempColor = $this->allocateColor($color); + imagesetthickness($this->image, 1); // Draw an ellipse if($thickness === 'filled') { - imagesetthickness($this->image, 1); - imagefilledellipse($this->image, $x, $y, $width, $height, $color); + imagefilledellipse($this->image, $x, $y, $width, $height, $tempColor); + + } else if ($thickness === 1) { + imageellipse($this->image, $x, $y, $width, $height, $tempColor); + } else { - // imagesetthickness doesn't appear to work with imageellipse, so we work around it. - imagesetthickness($this->image, 1); - $i = 0; - while($i++ < $thickness * 2 - 1) { - imageellipse($this->image, $x, $y, --$width, $height--, $color); - } + // New temp image + $tempImage = new SimpleImage(); + $tempImage->fromNew($this->getWidth(), $this->getHeight(), 'transparent'); + + // Draw a large ellipse filled with $color (+$thickness pixels) + $tempColor = $tempImage->allocateColor($color); + imagefilledellipse($tempImage->image, $x, $y, $width+$thickness, $height+$thickness, $tempColor); + + // Draw a smaller ellipse filled with red|blue (-$thickness pixels) + $tempColor = (self::normalizeColor($color)['red'] == 255) ? 'blue' : 'red'; + $tempColor = $tempImage->allocateColor($tempColor); + imagefilledellipse($tempImage->image, $x, $y, $width-$thickness, $height-$thickness, $tempColor); + + // Replace the color of the smaller ellipse with 'transparent' + $tempImage->excludeInsideColor($x, $y, $color); + + // Apply the temp image + $this->overlay($tempImage); } return $this; @@ -1352,7 +1620,7 @@ class SimpleImage { $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'; + $tempColor = (self::normalizeColor($color)['red'] == 255) ? 'blue' : 'red'; $radius = $radius - $thickness; $radius = self::keepWithin($radius, 0, $radius); $tempImage->roundedRectangle( @@ -1377,7 +1645,7 @@ class SimpleImage { /** * Exclude inside color. - * Used only for roundedRectangle() + * Used for roundedRectangle(), ellipse() and arc() * * @param number $x certer x of rectangle. * @param number $y certer y of rectangle. diff --git a/kirby/vendor/composer/ClassLoader.php b/kirby/vendor/composer/ClassLoader.php index 1a58957..247294d 100755 --- a/kirby/vendor/composer/ClassLoader.php +++ b/kirby/vendor/composer/ClassLoader.php @@ -42,6 +42,8 @@ namespace Composer\Autoload; */ class ClassLoader { + private $vendorDir; + // PSR-4 private $prefixLengthsPsr4 = array(); private $prefixDirsPsr4 = array(); @@ -57,6 +59,13 @@ class ClassLoader private $missingClasses = array(); private $apcuPrefix; + private static $registeredLoaders = array(); + + public function __construct($vendorDir = null) + { + $this->vendorDir = $vendorDir; + } + public function getPrefixes() { if (!empty($this->prefixesPsr0)) { @@ -300,6 +309,17 @@ class ClassLoader public function register($prepend = false) { spl_autoload_register(array($this, 'loadClass'), true, $prepend); + + if (null === $this->vendorDir) { + return; + } + + if ($prepend) { + self::$registeredLoaders = array($this->vendorDir => $this) + self::$registeredLoaders; + } else { + unset(self::$registeredLoaders[$this->vendorDir]); + self::$registeredLoaders[$this->vendorDir] = $this; + } } /** @@ -308,6 +328,10 @@ class ClassLoader public function unregister() { spl_autoload_unregister(array($this, 'loadClass')); + + if (null !== $this->vendorDir) { + unset(self::$registeredLoaders[$this->vendorDir]); + } } /** @@ -367,6 +391,16 @@ class ClassLoader return $file; } + /** + * Returns the currently registered loaders indexed by their corresponding vendor directories. + * + * @return self[] + */ + public static function getRegisteredLoaders() + { + return self::$registeredLoaders; + } + private function findFileWithExtension($class, $ext) { // PSR-4 lookup diff --git a/kirby/vendor/composer/InstalledVersions.php b/kirby/vendor/composer/InstalledVersions.php index af8c575..2dfa86c 100755 --- a/kirby/vendor/composer/InstalledVersions.php +++ b/kirby/vendor/composer/InstalledVersions.php @@ -1,7 +1,18 @@ array ( - 'pretty_version' => '3.5.4', - 'version' => '3.5.4.0', + 'pretty_version' => '3.5.5', + 'version' => '3.5.5.0', 'aliases' => array ( ), @@ -26,26 +39,26 @@ private static $installed = array ( array ( 'claviska/simpleimage' => array ( - 'pretty_version' => '3.5.1', - 'version' => '3.5.1.0', + 'pretty_version' => '3.6.3', + 'version' => '3.6.3.0', 'aliases' => array ( ), - 'reference' => 'ab2ab8a4672738ab77b39b00922ee4e79aeadb11', + 'reference' => '21b6f4bf4ef1927158b3e29bd0c2d99c6681c750', ), 'filp/whoops' => array ( - 'pretty_version' => '2.9.1', - 'version' => '2.9.1.0', + 'pretty_version' => '2.12.1', + 'version' => '2.12.1.0', 'aliases' => array ( ), - 'reference' => '307fb34a5ab697461ec4c9db865b20ff2fd40771', + 'reference' => 'c13c0be93cff50f88bbd70827d993026821914dd', ), 'getkirby/cms' => array ( - 'pretty_version' => '3.5.4', - 'version' => '3.5.4.0', + 'pretty_version' => '3.5.5', + 'version' => '3.5.5.0', 'aliases' => array ( ), @@ -71,12 +84,12 @@ private static $installed = array ( ), 'laminas/laminas-zendframework-bridge' => array ( - 'pretty_version' => '1.1.1', - 'version' => '1.1.1.0', + 'pretty_version' => '1.2.0', + 'version' => '1.2.0.0', 'aliases' => array ( ), - 'reference' => '6ede70583e101030bcace4dcddd648f760ddf642', + 'reference' => '6cccbddfcfc742eb02158d6137ca5687d92cee32', ), 'league/color-extractor' => array ( @@ -114,21 +127,21 @@ private static $installed = array ( ), 'phpmailer/phpmailer' => array ( - 'pretty_version' => 'v6.2.0', - 'version' => '6.2.0.0', + 'pretty_version' => 'v6.4.1', + 'version' => '6.4.1.0', 'aliases' => array ( ), - 'reference' => 'e38888a75c070304ca5514197d4847a59a5c853f', + 'reference' => '9256f12d8fb0cd0500f93b19e18c356906cbed3d', ), 'psr/log' => array ( - 'pretty_version' => '1.1.3', - 'version' => '1.1.3.0', + 'pretty_version' => '1.1.4', + 'version' => '1.1.4.0', 'aliases' => array ( ), - 'reference' => '0f73288fd15629204f9d42b7055f72dacbe811fc', + 'reference' => 'd49695b909c3b7628b6289db5479a1c204601f11', ), 'symfony/polyfill-mbstring' => array ( @@ -157,6 +170,8 @@ private static $installed = array ( ), ), ); +private static $canGetVendors; +private static $installedByVendor = array(); @@ -166,7 +181,16 @@ private static $installed = array ( public static function getInstalledPackages() { -return array_keys(self::$installed['versions']); +$packages = array(); +foreach (self::getInstalled() as $installed) { +$packages[] = array_keys($installed['versions']); +} + +if (1 === \count($packages)) { +return $packages[0]; +} + +return array_keys(array_flip(\call_user_func_array('array_merge', $packages))); } @@ -179,7 +203,13 @@ return array_keys(self::$installed['versions']); public static function isInstalled($packageName) { -return isset(self::$installed['versions'][$packageName]); +foreach (self::getInstalled() as $installed) { +if (isset($installed['versions'][$packageName])) { +return true; +} +} + +return false; } @@ -214,42 +244,50 @@ return $provided->matches($constraint); public static function getVersionRanges($packageName) { -if (!isset(self::$installed['versions'][$packageName])) { -throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); +foreach (self::getInstalled() as $installed) { +if (!isset($installed['versions'][$packageName])) { +continue; } $ranges = array(); -if (isset(self::$installed['versions'][$packageName]['pretty_version'])) { -$ranges[] = self::$installed['versions'][$packageName]['pretty_version']; +if (isset($installed['versions'][$packageName]['pretty_version'])) { +$ranges[] = $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('aliases', $installed['versions'][$packageName])) { +$ranges = array_merge($ranges, $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('replaced', $installed['versions'][$packageName])) { +$ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']); } -if (array_key_exists('provided', self::$installed['versions'][$packageName])) { -$ranges = array_merge($ranges, self::$installed['versions'][$packageName]['provided']); +if (array_key_exists('provided', $installed['versions'][$packageName])) { +$ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']); } return implode(' || ', $ranges); } +throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); +} + public static function getVersion($packageName) { -if (!isset(self::$installed['versions'][$packageName])) { -throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); +foreach (self::getInstalled() as $installed) { +if (!isset($installed['versions'][$packageName])) { +continue; } -if (!isset(self::$installed['versions'][$packageName]['version'])) { +if (!isset($installed['versions'][$packageName]['version'])) { return null; } -return self::$installed['versions'][$packageName]['version']; +return $installed['versions'][$packageName]['version']; +} + +throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); } @@ -258,15 +296,19 @@ 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'); +foreach (self::getInstalled() as $installed) { +if (!isset($installed['versions'][$packageName])) { +continue; } -if (!isset(self::$installed['versions'][$packageName]['pretty_version'])) { +if (!isset($installed['versions'][$packageName]['pretty_version'])) { return null; } -return self::$installed['versions'][$packageName]['pretty_version']; +return $installed['versions'][$packageName]['pretty_version']; +} + +throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); } @@ -275,15 +317,19 @@ 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'); +foreach (self::getInstalled() as $installed) { +if (!isset($installed['versions'][$packageName])) { +continue; } -if (!isset(self::$installed['versions'][$packageName]['reference'])) { +if (!isset($installed['versions'][$packageName]['reference'])) { return null; } -return self::$installed['versions'][$packageName]['reference']; +return $installed['versions'][$packageName]['reference']; +} + +throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); } @@ -292,7 +338,9 @@ return self::$installed['versions'][$packageName]['reference']; public static function getRootPackage() { -return self::$installed['root']; +$installed = self::getInstalled(); + +return $installed[0]['root']; } @@ -327,5 +375,33 @@ return self::$installed; public static function reload($data) { self::$installed = $data; +self::$installedByVendor = array(); +} + + + + + +private static function getInstalled() +{ +if (null === self::$canGetVendors) { +self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders'); +} + +$installed = array(); + +if (self::$canGetVendors) { +foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) { +if (isset(self::$installedByVendor[$vendorDir])) { +$installed[] = self::$installedByVendor[$vendorDir]; +} elseif (is_file($vendorDir.'/composer/installed.php')) { +$installed[] = self::$installedByVendor[$vendorDir] = require $vendorDir.'/composer/installed.php'; +} +} +} + +$installed[] = self::$installed; + +return $installed; } } diff --git a/kirby/vendor/composer/autoload_classmap.php b/kirby/vendor/composer/autoload_classmap.php index a054c0c..4dcda10 100755 --- a/kirby/vendor/composer/autoload_classmap.php +++ b/kirby/vendor/composer/autoload_classmap.php @@ -199,6 +199,11 @@ return array( '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\\Sane\\Handler' => $baseDir . '/src/Sane/Handler.php', + 'Kirby\\Sane\\Sane' => $baseDir . '/src/Sane/Sane.php', + 'Kirby\\Sane\\Svg' => $baseDir . '/src/Sane/Svg.php', + 'Kirby\\Sane\\Svgz' => $baseDir . '/src/Sane/Svgz.php', + 'Kirby\\Sane\\Xml' => $baseDir . '/src/Sane/Xml.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', diff --git a/kirby/vendor/composer/autoload_real.php b/kirby/vendor/composer/autoload_real.php index d08bef2..26b159d 100755 --- a/kirby/vendor/composer/autoload_real.php +++ b/kirby/vendor/composer/autoload_real.php @@ -23,7 +23,7 @@ class ComposerAutoloaderInitc26333d865e0329b638bdc17afd29896 } spl_autoload_register(array('ComposerAutoloaderInitc26333d865e0329b638bdc17afd29896', 'loadClassLoader'), true, true); - self::$loader = $loader = new \Composer\Autoload\ClassLoader(); + self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(\dirname(__FILE__))); spl_autoload_unregister(array('ComposerAutoloaderInitc26333d865e0329b638bdc17afd29896', 'loadClassLoader')); $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded()); diff --git a/kirby/vendor/composer/autoload_static.php b/kirby/vendor/composer/autoload_static.php index 46afda9..c2c8d42 100755 --- a/kirby/vendor/composer/autoload_static.php +++ b/kirby/vendor/composer/autoload_static.php @@ -294,6 +294,11 @@ class ComposerStaticInitc26333d865e0329b638bdc17afd29896 '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\\Sane\\Handler' => __DIR__ . '/../..' . '/src/Sane/Handler.php', + 'Kirby\\Sane\\Sane' => __DIR__ . '/../..' . '/src/Sane/Sane.php', + 'Kirby\\Sane\\Svg' => __DIR__ . '/../..' . '/src/Sane/Svg.php', + 'Kirby\\Sane\\Svgz' => __DIR__ . '/../..' . '/src/Sane/Svgz.php', + 'Kirby\\Sane\\Xml' => __DIR__ . '/../..' . '/src/Sane/Xml.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', diff --git a/kirby/vendor/composer/installed.json b/kirby/vendor/composer/installed.json index 6fd9e27..c084310 100755 --- a/kirby/vendor/composer/installed.json +++ b/kirby/vendor/composer/installed.json @@ -2,17 +2,17 @@ "packages": [ { "name": "claviska/simpleimage", - "version": "3.5.1", - "version_normalized": "3.5.1.0", + "version": "3.6.3", + "version_normalized": "3.6.3.0", "source": { "type": "git", "url": "https://github.com/claviska/SimpleImage.git", - "reference": "ab2ab8a4672738ab77b39b00922ee4e79aeadb11" + "reference": "21b6f4bf4ef1927158b3e29bd0c2d99c6681c750" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/claviska/SimpleImage/zipball/ab2ab8a4672738ab77b39b00922ee4e79aeadb11", - "reference": "ab2ab8a4672738ab77b39b00922ee4e79aeadb11", + "url": "https://api.github.com/repos/claviska/SimpleImage/zipball/21b6f4bf4ef1927158b3e29bd0c2d99c6681c750", + "reference": "21b6f4bf4ef1927158b3e29bd0c2d99c6681c750", "shasum": "" }, "require": { @@ -20,7 +20,7 @@ "league/color-extractor": "0.3.*", "php": ">=5.6.0" }, - "time": "2020-10-30T20:47:26+00:00", + "time": "2021-04-20T12:18:18+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -42,7 +42,7 @@ "description": "A PHP class that makes working with images as simple as possible.", "support": { "issues": "https://github.com/claviska/SimpleImage/issues", - "source": "https://github.com/claviska/SimpleImage/tree/3.5.1" + "source": "https://github.com/claviska/SimpleImage/tree/3.6.3" }, "funding": [ { @@ -54,17 +54,17 @@ }, { "name": "filp/whoops", - "version": "2.9.1", - "version_normalized": "2.9.1.0", + "version": "2.12.1", + "version_normalized": "2.12.1.0", "source": { "type": "git", "url": "https://github.com/filp/whoops.git", - "reference": "307fb34a5ab697461ec4c9db865b20ff2fd40771" + "reference": "c13c0be93cff50f88bbd70827d993026821914dd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/307fb34a5ab697461ec4c9db865b20ff2fd40771", - "reference": "307fb34a5ab697461ec4c9db865b20ff2fd40771", + "url": "https://api.github.com/repos/filp/whoops/zipball/c13c0be93cff50f88bbd70827d993026821914dd", + "reference": "c13c0be93cff50f88bbd70827d993026821914dd", "shasum": "" }, "require": { @@ -80,7 +80,7 @@ "symfony/var-dumper": "Pretty print complex values better with var-dumper available", "whoops/soap": "Formats errors as SOAP responses" }, - "time": "2020-11-01T12:00:00+00:00", + "time": "2021-04-25T12:00:00+00:00", "type": "library", "extra": { "branch-alias": { @@ -116,8 +116,14 @@ ], "support": { "issues": "https://github.com/filp/whoops/issues", - "source": "https://github.com/filp/whoops/tree/2.9.1" + "source": "https://github.com/filp/whoops/tree/2.12.1" }, + "funding": [ + { + "url": "https://github.com/denis-sokolov", + "type": "github" + } + ], "install-path": "../filp/whoops" }, { @@ -238,27 +244,29 @@ }, { "name": "laminas/laminas-zendframework-bridge", - "version": "1.1.1", - "version_normalized": "1.1.1.0", + "version": "1.2.0", + "version_normalized": "1.2.0.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-zendframework-bridge.git", - "reference": "6ede70583e101030bcace4dcddd648f760ddf642" + "reference": "6cccbddfcfc742eb02158d6137ca5687d92cee32" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-zendframework-bridge/zipball/6ede70583e101030bcace4dcddd648f760ddf642", - "reference": "6ede70583e101030bcace4dcddd648f760ddf642", + "url": "https://api.github.com/repos/laminas/laminas-zendframework-bridge/zipball/6cccbddfcfc742eb02158d6137ca5687d92cee32", + "reference": "6cccbddfcfc742eb02158d6137ca5687d92cee32", "shasum": "" }, "require": { - "php": "^5.6 || ^7.0 || ^8.0" + "php": "^7.3 || ^8.0" }, "require-dev": { "phpunit/phpunit": "^5.7 || ^6.5 || ^7.5 || ^8.1 || ^9.3", - "squizlabs/php_codesniffer": "^3.5" + "psalm/plugin-phpunit": "^0.15.1", + "squizlabs/php_codesniffer": "^3.5", + "vimeo/psalm": "^4.6" }, - "time": "2020-09-14T14:23:00+00:00", + "time": "2021-02-25T21:54:58+00:00", "type": "library", "extra": { "laminas": { @@ -472,17 +480,17 @@ }, { "name": "phpmailer/phpmailer", - "version": "v6.2.0", - "version_normalized": "6.2.0.0", + "version": "v6.4.1", + "version_normalized": "6.4.1.0", "source": { "type": "git", "url": "https://github.com/PHPMailer/PHPMailer.git", - "reference": "e38888a75c070304ca5514197d4847a59a5c853f" + "reference": "9256f12d8fb0cd0500f93b19e18c356906cbed3d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/e38888a75c070304ca5514197d4847a59a5c853f", - "reference": "e38888a75c070304ca5514197d4847a59a5c853f", + "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/9256f12d8fb0cd0500f93b19e18c356906cbed3d", + "reference": "9256f12d8fb0cd0500f93b19e18c356906cbed3d", "shasum": "" }, "require": { @@ -500,14 +508,14 @@ "yoast/phpunit-polyfills": "^0.2.0" }, "suggest": { - "ext-mbstring": "Needed to send email in multibyte encoding charset", + "ext-mbstring": "Needed to send email in multibyte encoding charset or decode encoded addresses", "hayageek/oauth2-yahoo": "Needed for Yahoo XOAUTH2 authentication", "league/oauth2-google": "Needed for Google XOAUTH2 authentication", "psr/log": "For optional PSR-3 debug logging", "stevenmaguire/oauth2-microsoft": "Needed for Microsoft XOAUTH2 authentication", "symfony/polyfill-mbstring": "To support UTF-8 if the Mbstring PHP extension is not enabled (^1.2)" }, - "time": "2020-11-25T15:24:57+00:00", + "time": "2021-04-29T12:25:04+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -539,7 +547,7 @@ "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" + "source": "https://github.com/PHPMailer/PHPMailer/tree/v6.4.1" }, "funding": [ { @@ -551,23 +559,23 @@ }, { "name": "psr/log", - "version": "1.1.3", - "version_normalized": "1.1.3.0", + "version": "1.1.4", + "version_normalized": "1.1.4.0", "source": { "type": "git", "url": "https://github.com/php-fig/log.git", - "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc" + "reference": "d49695b909c3b7628b6289db5479a1c204601f11" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc", - "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc", + "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11", + "reference": "d49695b909c3b7628b6289db5479a1c204601f11", "shasum": "" }, "require": { "php": ">=5.3.0" }, - "time": "2020-03-23T09:12:05+00:00", + "time": "2021-05-03T11:20:27+00:00", "type": "library", "extra": { "branch-alias": { @@ -587,7 +595,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common interface for logging libraries", @@ -598,7 +606,7 @@ "psr-3" ], "support": { - "source": "https://github.com/php-fig/log/tree/1.1.3" + "source": "https://github.com/php-fig/log/tree/1.1.4" }, "install-path": "../psr/log" }, diff --git a/kirby/vendor/composer/installed.php b/kirby/vendor/composer/installed.php index e4ccc00..d70df11 100755 --- a/kirby/vendor/composer/installed.php +++ b/kirby/vendor/composer/installed.php @@ -1,8 +1,8 @@ array ( - 'pretty_version' => '3.5.4', - 'version' => '3.5.4.0', + 'pretty_version' => '3.5.5', + 'version' => '3.5.5.0', 'aliases' => array ( ), @@ -13,26 +13,26 @@ array ( 'claviska/simpleimage' => array ( - 'pretty_version' => '3.5.1', - 'version' => '3.5.1.0', + 'pretty_version' => '3.6.3', + 'version' => '3.6.3.0', 'aliases' => array ( ), - 'reference' => 'ab2ab8a4672738ab77b39b00922ee4e79aeadb11', + 'reference' => '21b6f4bf4ef1927158b3e29bd0c2d99c6681c750', ), 'filp/whoops' => array ( - 'pretty_version' => '2.9.1', - 'version' => '2.9.1.0', + 'pretty_version' => '2.12.1', + 'version' => '2.12.1.0', 'aliases' => array ( ), - 'reference' => '307fb34a5ab697461ec4c9db865b20ff2fd40771', + 'reference' => 'c13c0be93cff50f88bbd70827d993026821914dd', ), 'getkirby/cms' => array ( - 'pretty_version' => '3.5.4', - 'version' => '3.5.4.0', + 'pretty_version' => '3.5.5', + 'version' => '3.5.5.0', 'aliases' => array ( ), @@ -58,12 +58,12 @@ ), 'laminas/laminas-zendframework-bridge' => array ( - 'pretty_version' => '1.1.1', - 'version' => '1.1.1.0', + 'pretty_version' => '1.2.0', + 'version' => '1.2.0.0', 'aliases' => array ( ), - 'reference' => '6ede70583e101030bcace4dcddd648f760ddf642', + 'reference' => '6cccbddfcfc742eb02158d6137ca5687d92cee32', ), 'league/color-extractor' => array ( @@ -101,21 +101,21 @@ ), 'phpmailer/phpmailer' => array ( - 'pretty_version' => 'v6.2.0', - 'version' => '6.2.0.0', + 'pretty_version' => 'v6.4.1', + 'version' => '6.4.1.0', 'aliases' => array ( ), - 'reference' => 'e38888a75c070304ca5514197d4847a59a5c853f', + 'reference' => '9256f12d8fb0cd0500f93b19e18c356906cbed3d', ), 'psr/log' => array ( - 'pretty_version' => '1.1.3', - 'version' => '1.1.3.0', + 'pretty_version' => '1.1.4', + 'version' => '1.1.4.0', 'aliases' => array ( ), - 'reference' => '0f73288fd15629204f9d42b7055f72dacbe811fc', + 'reference' => 'd49695b909c3b7628b6289db5479a1c204601f11', ), 'symfony/polyfill-mbstring' => array ( diff --git a/kirby/vendor/filp/whoops/composer.json b/kirby/vendor/filp/whoops/composer.json index b27f33a..0d90dfc 100755 --- a/kirby/vendor/filp/whoops/composer.json +++ b/kirby/vendor/filp/whoops/composer.json @@ -11,6 +11,9 @@ "role": "Developer" } ], + "scripts": { + "test": "phpunit --testdox tests" + }, "require": { "php": "^5.5.9 || ^7.0 || ^8.0", "psr/log": "^1.0.1" diff --git a/kirby/vendor/filp/whoops/src/Whoops/Handler/JsonResponseHandler.php b/kirby/vendor/filp/whoops/src/Whoops/Handler/JsonResponseHandler.php index fdd7ead..2966d38 100755 --- a/kirby/vendor/filp/whoops/src/Whoops/Handler/JsonResponseHandler.php +++ b/kirby/vendor/filp/whoops/src/Whoops/Handler/JsonResponseHandler.php @@ -28,7 +28,7 @@ class JsonResponseHandler extends Handler /** * Returns errors[[]] instead of error[] to be in compliance with the json:api spec * @param bool $jsonApi Default is false - * @return $this + * @return static */ public function setJsonApi($jsonApi = false) { @@ -38,7 +38,7 @@ class JsonResponseHandler extends Handler /** * @param bool|null $returnFrames - * @return bool|$this + * @return bool|static */ public function addTraceToOutput($returnFrames = null) { diff --git a/kirby/vendor/filp/whoops/src/Whoops/Handler/PlainTextHandler.php b/kirby/vendor/filp/whoops/src/Whoops/Handler/PlainTextHandler.php index 192d0ff..6c148aa 100755 --- a/kirby/vendor/filp/whoops/src/Whoops/Handler/PlainTextHandler.php +++ b/kirby/vendor/filp/whoops/src/Whoops/Handler/PlainTextHandler.php @@ -97,17 +97,18 @@ class PlainTextHandler extends Handler * Set var dumper callback function. * * @param callable $dumper - * @return void + * @return static */ public function setDumper(callable $dumper) { $this->dumper = $dumper; + return $this; } /** * Add error trace to output. * @param bool|null $addTraceToOutput - * @return bool|$this + * @return bool|static */ public function addTraceToOutput($addTraceToOutput = null) { @@ -122,7 +123,7 @@ class PlainTextHandler extends Handler /** * Add previous exceptions to output. * @param bool|null $addPreviousToOutput - * @return bool|$this + * @return bool|static */ public function addPreviousToOutput($addPreviousToOutput = null) { @@ -138,7 +139,7 @@ class PlainTextHandler extends Handler * Add error trace function arguments to output. * Set to True for all frame args, or integer for the n first frame args. * @param bool|integer|null $addTraceFunctionArgsToOutput - * @return null|bool|integer + * @return static|bool|integer */ public function addTraceFunctionArgsToOutput($addTraceFunctionArgsToOutput = null) { @@ -151,6 +152,7 @@ class PlainTextHandler extends Handler } else { $this->addTraceFunctionArgsToOutput = $addTraceFunctionArgsToOutput; } + return $this; } /** @@ -158,10 +160,12 @@ class PlainTextHandler extends Handler * If the limit is reached, the var_dump output is discarded. * Prevent memory limit errors. * @var integer + * @return static */ public function setTraceFunctionArgsOutputLimit($traceFunctionArgsOutputLimit) { $this->traceFunctionArgsOutputLimit = (integer) $traceFunctionArgsOutputLimit; + return $this; } /** @@ -199,7 +203,7 @@ class PlainTextHandler extends Handler /** * Only output to logger. * @param bool|null $loggerOnly - * @return null|bool + * @return static|bool */ public function loggerOnly($loggerOnly = null) { @@ -208,6 +212,7 @@ class PlainTextHandler extends Handler } $this->loggerOnly = (bool) $loggerOnly; + return $this; } /** diff --git a/kirby/vendor/filp/whoops/src/Whoops/Handler/PrettyPageHandler.php b/kirby/vendor/filp/whoops/src/Whoops/Handler/PrettyPageHandler.php index a907d4d..c6c8be0 100755 --- a/kirby/vendor/filp/whoops/src/Whoops/Handler/PrettyPageHandler.php +++ b/kirby/vendor/filp/whoops/src/Whoops/Handler/PrettyPageHandler.php @@ -175,6 +175,8 @@ class PrettyPageHandler extends Handler /** * @return int|null + * + * @throws \Exception */ public function handle() { @@ -349,11 +351,12 @@ class PrettyPageHandler extends Handler * @param string $label * @param array $data * - * @return void + * @return static */ public function addDataTable($label, array $data) { $this->extraTables[$label] = $data; + return $this; } /** @@ -368,7 +371,7 @@ class PrettyPageHandler extends Handler * * @throws InvalidArgumentException If $callback is not callable * - * @return void + * @return static */ public function addDataTableCallback($label, /* callable */ $callback) { @@ -387,6 +390,8 @@ class PrettyPageHandler extends Handler return []; } }; + + return $this; } /** @@ -418,7 +423,7 @@ class PrettyPageHandler extends Handler * * @param bool|null $value * - * @return bool|null + * @return bool|static */ public function handleUnconditionally($value = null) { @@ -427,6 +432,7 @@ class PrettyPageHandler extends Handler } $this->handleUnconditionally = (bool) $value; + return $this; } /** @@ -447,11 +453,12 @@ class PrettyPageHandler extends Handler * @param string $identifier * @param string|callable $resolver * - * @return void + * @return static */ public function addEditor($identifier, $resolver) { $this->editors[$identifier] = $resolver; + return $this; } /** @@ -469,7 +476,7 @@ class PrettyPageHandler extends Handler * * @throws InvalidArgumentException If invalid argument identifier provided * - * @return void + * @return static */ public function setEditor($editor) { @@ -481,6 +488,7 @@ class PrettyPageHandler extends Handler } $this->editor = $editor; + return $this; } /** @@ -591,11 +599,12 @@ class PrettyPageHandler extends Handler * * @param string $title * - * @return void + * @return static */ public function setPageTitle($title) { $this->pageTitle = (string) $title; + return $this; } /** @@ -615,7 +624,7 @@ class PrettyPageHandler extends Handler * * @throws InvalidArgumentException If $path is not a valid directory * - * @return void + * @return static */ public function addResourcePath($path) { @@ -626,6 +635,7 @@ class PrettyPageHandler extends Handler } array_unshift($this->searchPaths, $path); + return $this; } /** @@ -633,11 +643,12 @@ class PrettyPageHandler extends Handler * * @param string|null $name * - * @return void + * @return static */ public function addCustomCss($name) { $this->customCss = $name; + return $this; } /** @@ -645,11 +656,12 @@ class PrettyPageHandler extends Handler * * @param string|null $name * - * @return void + * @return static */ public function addCustomJs($name) { $this->customJs = $name; + return $this; } /** @@ -718,11 +730,12 @@ class PrettyPageHandler extends Handler * * @param string $resourcesPath * - * @return void + * @return static */ public function setResourcesPath($resourcesPath) { $this->addResourcePath($resourcesPath); + return $this; } /** @@ -767,11 +780,12 @@ class PrettyPageHandler extends Handler * @param string $key The key within the superglobal * @see hideSuperglobalKey * - * @return void + * @return static */ public function blacklist($superGlobalName, $key) { $this->blacklist[$superGlobalName][] = $key; + return $this; } /** @@ -779,7 +793,7 @@ class PrettyPageHandler extends Handler * * @param string $superGlobalName The name of the superglobal array, e.g. '_GET' * @param string $key The key within the superglobal - * @return void + * @return static */ public function hideSuperglobalKey($superGlobalName, $key) { @@ -789,9 +803,10 @@ class PrettyPageHandler extends Handler /** * Checks all values within the given superGlobal array. * - * Blacklisted values will be replaced by a equal length string cointaining - * only '*' characters. We intentionally dont rely on $GLOBALS as it - * depends on the 'auto_globals_jit' php.ini setting. + * Blacklisted values will be replaced by a equal length string containing + * only '*' characters for string values. + * Non-string values will be replaced with a fixed asterisk count. + * 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 string $superGlobalName The name of the superglobal array, e.g. '_GET' @@ -805,8 +820,8 @@ class PrettyPageHandler extends Handler $values = $superGlobal; foreach ($blacklisted as $key) { - if (isset($superGlobal[$key]) && is_string($superGlobal[$key])) { - $values[$key] = str_repeat('*', strlen($superGlobal[$key])); + if (isset($superGlobal[$key])) { + $values[$key] = str_repeat('*', is_string($superGlobal[$key]) ? strlen($superGlobal[$key]) : 3); } } diff --git a/kirby/vendor/filp/whoops/src/Whoops/Handler/XmlResponseHandler.php b/kirby/vendor/filp/whoops/src/Whoops/Handler/XmlResponseHandler.php index decbbfa..d695750 100755 --- a/kirby/vendor/filp/whoops/src/Whoops/Handler/XmlResponseHandler.php +++ b/kirby/vendor/filp/whoops/src/Whoops/Handler/XmlResponseHandler.php @@ -23,7 +23,7 @@ class XmlResponseHandler extends Handler /** * @param bool|null $returnFrames - * @return bool|$this + * @return bool|static */ public function addTraceToOutput($returnFrames = null) { diff --git a/kirby/vendor/filp/whoops/src/Whoops/Resources/js/whoops.base.js b/kirby/vendor/filp/whoops/src/Whoops/Resources/js/whoops.base.js index 8cfb5b4..20730b0 100755 --- a/kirby/vendor/filp/whoops/src/Whoops/Resources/js/whoops.base.js +++ b/kirby/vendor/filp/whoops/src/Whoops/Resources/js/whoops.base.js @@ -100,7 +100,7 @@ Zepto(function($) { var clipboard = new Clipboard('.clipboard'); var showTooltip = function(elem, msg) { - elem.setAttribute('class', 'clipboard tooltipped tooltipped-s'); + elem.classList.add('tooltipped', 'tooltipped-s'); elem.setAttribute('aria-label', msg); }; @@ -117,7 +117,7 @@ Zepto(function($) { var btn = document.querySelector('.clipboard'); btn.addEventListener('mouseleave', function(e) { - e.currentTarget.setAttribute('class', 'clipboard'); + e.currentTarget.classList.remove('tooltipped', 'tooltipped-s'); e.currentTarget.removeAttribute('aria-label'); }); diff --git a/kirby/vendor/filp/whoops/src/Whoops/Run.php b/kirby/vendor/filp/whoops/src/Whoops/Run.php index 4ea7630..639b3ae 100755 --- a/kirby/vendor/filp/whoops/src/Whoops/Run.php +++ b/kirby/vendor/filp/whoops/src/Whoops/Run.php @@ -38,6 +38,11 @@ final class Run implements RunInterface */ private $sendHttpCode = 500; + /** + * @var integer|false + */ + private $sendExitCode = 1; + /** * @var HandlerInterface[] */ @@ -288,6 +293,31 @@ final class Run implements RunInterface return $this->sendHttpCode = $code; } + /** + * Should Whoops exit with a specific code on the CLI if possible? + * Whoops will exit with 1 by default, but you can specify something else. + * + * @param int $code + * + * @return int + * + * @throws InvalidArgumentException + */ + public function sendExitCode($code = null) + { + if (func_num_args() == 0) { + return $this->sendExitCode; + } + + if ($code < 0 || 255 <= $code) { + throw new InvalidArgumentException( + "Invalid status code '$code', must be between 0 and 254" + ); + } + + return $this->sendExitCode = (int) $code; + } + /** * Should Whoops push output directly to the client? * If this is false, output will be returned by handleException. @@ -380,7 +410,9 @@ final class Run implements RunInterface // HHVM fix for https://github.com/facebook/hhvm/issues/4055 $this->system->flushOutputBuffer(); - $this->system->stopExecution(1); + $this->system->stopExecution( + $this->sendExitCode() + ); } return $output; diff --git a/kirby/vendor/filp/whoops/src/Whoops/RunInterface.php b/kirby/vendor/filp/whoops/src/Whoops/RunInterface.php index 67ba90d..8162fe4 100755 --- a/kirby/vendor/filp/whoops/src/Whoops/RunInterface.php +++ b/kirby/vendor/filp/whoops/src/Whoops/RunInterface.php @@ -90,6 +90,15 @@ interface RunInterface */ public function sendHttpCode($code = null); + /** + * Should Whoops exit with a specific code on the CLI if possible? + * Whoops will exit with 1 by default, but you can specify something else. + * + * @param int $code + * @return int + */ + public function sendExitCode($code = null); + /** * Should Whoops push output directly to the client? * If this is false, output will be returned by handleException diff --git a/kirby/vendor/filp/whoops/src/Whoops/Util/SystemFacade.php b/kirby/vendor/filp/whoops/src/Whoops/Util/SystemFacade.php index fb1bc28..9eb0acf 100755 --- a/kirby/vendor/filp/whoops/src/Whoops/Util/SystemFacade.php +++ b/kirby/vendor/filp/whoops/src/Whoops/Util/SystemFacade.php @@ -124,6 +124,13 @@ class SystemFacade */ public function setHttpResponseCode($httpCode) { + if (!headers_sent()) { + // Ensure that no 'location' header is present as otherwise this + // will override the HTTP code being set here, and mask the + // expected error page. + header_remove('location'); + } + return http_response_code($httpCode); } diff --git a/kirby/vendor/laminas/laminas-zendframework-bridge/composer.json b/kirby/vendor/laminas/laminas-zendframework-bridge/composer.json index 34af15a..d025ba0 100755 --- a/kirby/vendor/laminas/laminas-zendframework-bridge/composer.json +++ b/kirby/vendor/laminas/laminas-zendframework-bridge/composer.json @@ -15,11 +15,13 @@ "forum": "https://discourse.laminas.dev/" }, "require": { - "php": "^5.6 || ^7.0 || ^8.0" + "php": "^7.3 || ^8.0" }, "require-dev": { "phpunit/phpunit": "^5.7 || ^6.5 || ^7.5 || ^8.1 || ^9.3", - "squizlabs/php_codesniffer": "^3.5" + "psalm/plugin-phpunit": "^0.15.1", + "squizlabs/php_codesniffer": "^3.5", + "vimeo/psalm": "^4.6" }, "autoload": { "files": [ @@ -52,6 +54,7 @@ "scripts": { "cs-check": "phpcs", "cs-fix": "phpcbf", + "static-analysis": "psalm --shepherd --stats", "test": "phpunit --colors=always", "test-coverage": "phpunit --colors=always --coverage-clover clover.xml" } diff --git a/kirby/vendor/phpmailer/phpmailer/composer.json b/kirby/vendor/phpmailer/phpmailer/composer.json index 7388bd9..58393b2 100755 --- a/kirby/vendor/phpmailer/phpmailer/composer.json +++ b/kirby/vendor/phpmailer/phpmailer/composer.json @@ -40,7 +40,7 @@ "yoast/phpunit-polyfills": "^0.2.0" }, "suggest": { - "ext-mbstring": "Needed to send email in multibyte encoding charset", + "ext-mbstring": "Needed to send email in multibyte encoding charset or decode encoded addresses", "hayageek/oauth2-yahoo": "Needed for Yahoo XOAUTH2 authentication", "league/oauth2-google": "Needed for Google XOAUTH2 authentication", "psr/log": "For optional PSR-3 debug logging", @@ -57,5 +57,9 @@ "PHPMailer\\Test\\": "test/" } }, - "license": "LGPL-2.1-only" + "license": "LGPL-2.1-only", + "scripts": { + "check": "./vendor/bin/phpcs", + "test": "./vendor/bin/phpunit" + } } diff --git a/kirby/vendor/phpmailer/phpmailer/get_oauth_token.php b/kirby/vendor/phpmailer/phpmailer/get_oauth_token.php index 560d364..befdc34 100755 --- a/kirby/vendor/phpmailer/phpmailer/get_oauth_token.php +++ b/kirby/vendor/phpmailer/phpmailer/get_oauth_token.php @@ -38,20 +38,20 @@ namespace PHPMailer\PHPMailer; * Plenty to choose from here: * @see http://oauth2-client.thephpleague.com/providers/thirdparty/ */ -// @see https://github.com/thephpleague/oauth2-google +//@see https://github.com/thephpleague/oauth2-google use League\OAuth2\Client\Provider\Google; -// @see https://packagist.org/packages/hayageek/oauth2-yahoo +//@see https://packagist.org/packages/hayageek/oauth2-yahoo use Hayageek\OAuth2\Client\Provider\Yahoo; -// @see https://github.com/stevenmaguire/oauth2-microsoft +//@see https://github.com/stevenmaguire/oauth2-microsoft use Stevenmaguire\OAuth2\Client\Provider\Microsoft; if (!isset($_GET['code']) && !isset($_GET['provider'])) { ?> -Select Provider:
-Google
-Yahoo
-Microsoft/Outlook/Hotmail/Live/Office365
+Select Provider:
+Google
+Yahoo
+Microsoft/Outlook/Hotmail/Live/Office365
getAuthorizationUrl($options); $_SESSION['oauth2state'] = $provider->getState(); header('Location: ' . $authUrl); exit; -// Check given state against previously stored one to mitigate CSRF attack + //Check given state against previously stored one to mitigate CSRF attack } elseif (empty($_GET['state']) || ($_GET['state'] !== $_SESSION['oauth2state'])) { unset($_SESSION['oauth2state']); unset($_SESSION['provider']); exit('Invalid state'); } else { unset($_SESSION['provider']); - // Try to get an access token (using the authorization code grant) + //Try to get an access token (using the authorization code grant) $token = $provider->getAccessToken( 'authorization_code', [ 'code' => $_GET['code'] ] ); - // Use this to interact with an API on the users behalf - // Use this to get a new access token if the old one expires + //Use this to interact with an API on the users behalf + //Use this to get a new access token if the old one expires echo 'Refresh Token: ', $token->getRefreshToken(); } diff --git a/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-cs.php b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-cs.php index 55bdd9c..e770a1a 100755 --- a/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-cs.php +++ b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-cs.php @@ -16,6 +16,8 @@ $PHPMAILER_LANG['file_open'] = 'Chyba souboru: Nelze otevřít soubor $PHPMAILER_LANG['from_failed'] = 'Následující adresa odesílatele je nesprávná: '; $PHPMAILER_LANG['instantiate'] = 'Nelze vytvořit instanci emailové funkce.'; $PHPMAILER_LANG['invalid_address'] = 'Neplatná adresa: '; +$PHPMAILER_LANG['invalid_hostentry'] = 'Záznam hostitele je nesprávný: '; +$PHPMAILER_LANG['invalid_host'] = 'Hostitel je nesprávný: '; $PHPMAILER_LANG['mailer_not_supported'] = ' mailer není podporován.'; $PHPMAILER_LANG['provide_address'] = 'Musíte zadat alespoň jednu emailovou adresu příjemce.'; $PHPMAILER_LANG['recipients_failed'] = 'Chyba SMTP: Následující adresy příjemců nejsou správně: '; diff --git a/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-sk.php b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-sk.php index a1cfb28..028f5bc 100755 --- a/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-sk.php +++ b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-sk.php @@ -18,6 +18,8 @@ $PHPMAILER_LANG['file_open'] = 'File Error: Súbor sa otvoriť pre č $PHPMAILER_LANG['from_failed'] = 'Následujúca adresa From je nesprávna: '; $PHPMAILER_LANG['instantiate'] = 'Nedá sa vytvoriť inštancia emailovej funkcie.'; $PHPMAILER_LANG['invalid_address'] = 'Neodoslané, emailová adresa je nesprávna: '; +$PHPMAILER_LANG['invalid_hostentry'] = 'Záznam hostiteľa je nesprávny: '; +$PHPMAILER_LANG['invalid_host'] = 'Hostiteľ je nesprávny: '; $PHPMAILER_LANG['mailer_not_supported'] = ' emailový klient nieje podporovaný.'; $PHPMAILER_LANG['provide_address'] = 'Musíte zadať aspoň jednu emailovú adresu príjemcu.'; $PHPMAILER_LANG['recipients_failed'] = 'SMTP Error: Adresy príjemcov niesu správne '; diff --git a/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-sr_latn.php b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-sr_latn.php new file mode 100755 index 0000000..6213832 --- /dev/null +++ b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-sr_latn.php @@ -0,0 +1,28 @@ + + * @author Miloš Milanović + */ + +$PHPMAILER_LANG['authenticate'] = 'SMTP greška: autentifikacija nije uspela.'; +$PHPMAILER_LANG['connect_host'] = 'SMTP greška: povezivanje sa SMTP serverom nije uspelo.'; +$PHPMAILER_LANG['data_not_accepted'] = 'SMTP greška: podaci nisu prihvaćeni.'; +$PHPMAILER_LANG['empty_message'] = 'Sadržaj poruke je prazan.'; +$PHPMAILER_LANG['encoding'] = 'Nepoznato kodiranje: '; +$PHPMAILER_LANG['execute'] = 'Nije moguće izvršiti naredbu: '; +$PHPMAILER_LANG['file_access'] = 'Nije moguće pristupiti datoteci: '; +$PHPMAILER_LANG['file_open'] = 'Nije moguće otvoriti datoteku: '; +$PHPMAILER_LANG['from_failed'] = 'SMTP greška: slanje sa sledećih adresa nije uspelo: '; +$PHPMAILER_LANG['recipients_failed'] = 'SMTP greška: slanje na sledeće adrese nije uspelo: '; +$PHPMAILER_LANG['instantiate'] = 'Nije moguće pokrenuti mail funkciju.'; +$PHPMAILER_LANG['invalid_address'] = 'Poruka nije poslata. Neispravna adresa: '; +$PHPMAILER_LANG['mailer_not_supported'] = ' majler nije podržan.'; +$PHPMAILER_LANG['provide_address'] = 'Definišite bar jednu adresu primaoca.'; +$PHPMAILER_LANG['signing'] = 'Greška prilikom prijave: '; +$PHPMAILER_LANG['smtp_connect_failed'] = 'Povezivanje sa SMTP serverom nije uspelo.'; +$PHPMAILER_LANG['smtp_error'] = 'Greška SMTP servera: '; +$PHPMAILER_LANG['variable_set'] = 'Nije moguće zadati niti resetovati promenljivu: '; +$PHPMAILER_LANG['extension_missing'] = 'Nedostaje proširenje: '; diff --git a/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-uk.php b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-uk.php index 9fa60cf..3dea055 100755 --- a/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-uk.php +++ b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-uk.php @@ -16,11 +16,11 @@ $PHPMAILER_LANG['file_access'] = 'Немає доступу до фай $PHPMAILER_LANG['file_open'] = 'Помилка файлової системи: не вдається відкрити файл: '; $PHPMAILER_LANG['from_failed'] = 'Невірна адреса відправника: '; $PHPMAILER_LANG['instantiate'] = 'Неможливо запустити функцію mail().'; -$PHPMAILER_LANG['provide_address'] = 'Будь-ласка, введіть хоча б одну email-адресу отримувача.'; +$PHPMAILER_LANG['provide_address'] = 'Будь ласка, введіть хоча б одну email-адресу отримувача.'; $PHPMAILER_LANG['mailer_not_supported'] = ' - поштовий сервер не підтримується.'; $PHPMAILER_LANG['recipients_failed'] = 'Помилка SMTP: не вдалося відправлення для таких отримувачів: '; $PHPMAILER_LANG['empty_message'] = 'Пусте повідомлення'; -$PHPMAILER_LANG['invalid_address'] = 'Не відправлено через невірний формат email-адреси: '; +$PHPMAILER_LANG['invalid_address'] = 'Не відправлено через неправильний формат email-адреси: '; $PHPMAILER_LANG['signing'] = 'Помилка підпису: '; $PHPMAILER_LANG['smtp_connect_failed'] = 'Помилка з\'єднання з SMTP-сервером'; $PHPMAILER_LANG['smtp_error'] = 'Помилка SMTP-сервера: '; diff --git a/kirby/vendor/phpmailer/phpmailer/src/OAuth.php b/kirby/vendor/phpmailer/phpmailer/src/OAuth.php index 07fde4c..c93d0be 100755 --- a/kirby/vendor/phpmailer/phpmailer/src/OAuth.php +++ b/kirby/vendor/phpmailer/phpmailer/src/OAuth.php @@ -123,7 +123,7 @@ class OAuth */ public function getOauth64() { - // Get a new token if it's not available or has expired + //Get a new token if it's not available or has expired if (null === $this->oauthToken || $this->oauthToken->hasExpired()) { $this->oauthToken = $this->getToken(); } diff --git a/kirby/vendor/phpmailer/phpmailer/src/PHPMailer.php b/kirby/vendor/phpmailer/phpmailer/src/PHPMailer.php index c8fc1a8..2d16116 100755 --- a/kirby/vendor/phpmailer/phpmailer/src/PHPMailer.php +++ b/kirby/vendor/phpmailer/phpmailer/src/PHPMailer.php @@ -748,7 +748,7 @@ class PHPMailer * * @var string */ - const VERSION = '6.2.0'; + const VERSION = '6.4.1'; /** * Error severity: message only, continue processing. @@ -862,18 +862,25 @@ class PHPMailer $subject = $this->encodeHeader($this->secureHeader($subject)); } //Calling mail() with null params breaks + $this->edebug('Sending with mail()'); + $this->edebug('Sendmail path: ' . ini_get('sendmail_path')); + $this->edebug("Envelope sender: {$this->Sender}"); + $this->edebug("To: {$to}"); + $this->edebug("Subject: {$subject}"); + $this->edebug("Headers: {$header}"); if (!$this->UseSendmailOptions || null === $params) { $result = @mail($to, $subject, $body, $header); } else { + $this->edebug("Additional params: {$params}"); $result = @mail($to, $subject, $body, $header, $params); } - + $this->edebug('Result: ' . ($result ? 'true' : 'false')); return $result; } /** - * Output debugging info via user-defined method. - * Only generates output if SMTP debug output is enabled (@see SMTP::$do_debug). + * Output debugging info via a user-defined method. + * Only generates output if debug output is enabled. * * @see PHPMailer::$Debugoutput * @see PHPMailer::$SMTPDebug @@ -1070,7 +1077,7 @@ class PHPMailer $name = trim(preg_replace('/[\r\n]+/', '', $name)); //Strip breaks and trim $pos = strrpos($address, '@'); if (false === $pos) { - // At-sign is missing. + //At-sign is missing. $error_message = sprintf( '%s (%s): %s', $this->lang('invalid_address'), @@ -1086,7 +1093,7 @@ class PHPMailer return false; } $params = [$kind, $address, $name]; - // Enqueue addresses with IDN until we know the PHPMailer::$CharSet. + //Enqueue addresses with IDN until we know the PHPMailer::$CharSet. if (static::idnSupported() && $this->has8bitChars(substr($address, ++$pos))) { if ('Reply-To' !== $kind) { if (!array_key_exists($address, $this->RecipientsQueue)) { @@ -1103,7 +1110,7 @@ class PHPMailer return false; } - // Immediately add standard addresses without IDN. + //Immediately add standard addresses without IDN. return call_user_func_array([$this, 'addAnAddress'], $params); } @@ -1191,6 +1198,15 @@ class PHPMailer $address->mailbox . '@' . $address->host ) ) { + //Decode the name part if it's present and encoded + if ( + property_exists($address, 'personal') && + extension_loaded('mbstring') && + preg_match('/^=\?.*\?=$/', $address->personal) + ) { + $address->personal = mb_decode_mimeheader($address->personal); + } + $addresses[] = [ 'name' => (property_exists($address, 'personal') ? $address->personal : ''), 'address' => $address->mailbox . '@' . $address->host, @@ -1214,9 +1230,15 @@ class PHPMailer } else { list($name, $email) = explode('<', $address); $email = trim(str_replace('>', '', $email)); + $name = trim($name); if (static::validateAddress($email)) { + //If this name is encoded, decode it + if (preg_match('/^=\?.*\?=$/', $name)) { + $name = mb_decode_mimeheader($name); + } $addresses[] = [ - 'name' => trim(str_replace(['"', "'"], '', $name)), + //Remove any surrounding quotes and spaces from the name + 'name' => trim($name, '\'" '), 'address' => $email, ]; } @@ -1242,7 +1264,7 @@ class PHPMailer { $address = trim($address); $name = trim(preg_replace('/[\r\n]+/', '', $name)); //Strip breaks and trim - // Don't validate now addresses with IDN. Will be done in send(). + //Don't validate now addresses with IDN. Will be done in send(). $pos = strrpos($address, '@'); if ( (false === $pos) @@ -1395,7 +1417,7 @@ class PHPMailer */ public function punyencodeAddress($address) { - // Verify we have required functions, CharSet, and at-sign. + //Verify we have required functions, CharSet, and at-sign. $pos = strrpos($address, '@'); if ( !empty($this->CharSet) && @@ -1403,16 +1425,20 @@ class PHPMailer static::idnSupported() ) { $domain = substr($address, ++$pos); - // Verify CharSet string is a valid one, and domain properly encoded in this CharSet. + //Verify CharSet string is a valid one, and domain properly encoded in this CharSet. if ($this->has8bitChars($domain) && @mb_check_encoding($domain, $this->CharSet)) { - $domain = mb_convert_encoding($domain, 'UTF-8', $this->CharSet); + //Convert the domain from whatever charset it's in to UTF-8 + $domain = mb_convert_encoding($domain, self::CHARSET_UTF8, $this->CharSet); //Ignore IDE complaints about this line - method signature changed in PHP 5.4 $errorcode = 0; if (defined('INTL_IDNA_VARIANT_UTS46')) { - $punycode = idn_to_ascii($domain, $errorcode, INTL_IDNA_VARIANT_UTS46); + //Use the current punycode standard (appeared in PHP 7.2) + $punycode = idn_to_ascii($domain, $errorcode, \INTL_IDNA_VARIANT_UTS46); } elseif (defined('INTL_IDNA_VARIANT_2003')) { - $punycode = idn_to_ascii($domain, $errorcode, INTL_IDNA_VARIANT_2003); + //Fall back to this old, deprecated/removed encoding + $punycode = idn_to_ascii($domain, $errorcode, \INTL_IDNA_VARIANT_2003); } else { + //Fall back to a default we don't know about $punycode = idn_to_ascii($domain, $errorcode); } if (false !== $punycode) { @@ -1462,7 +1488,7 @@ class PHPMailer { if ( 'smtp' === $this->Mailer - || ('mail' === $this->Mailer && (PHP_VERSION_ID >= 80000 || stripos(PHP_OS, 'WIN') === 0)) + || ('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 @@ -1474,8 +1500,8 @@ class PHPMailer //Check for buggy PHP versions that add a header with an incorrect line break if ( 'mail' === $this->Mailer - && ((PHP_VERSION_ID >= 70000 && PHP_VERSION_ID < 70017) - || (PHP_VERSION_ID >= 70100 && PHP_VERSION_ID < 70103)) + && ((\PHP_VERSION_ID >= 70000 && \PHP_VERSION_ID < 70017) + || (\PHP_VERSION_ID >= 70100 && \PHP_VERSION_ID < 70103)) && ini_get('mail.add_x_header') === '1' && stripos(PHP_OS, 'WIN') === 0 ) { @@ -1488,10 +1514,10 @@ class PHPMailer } try { - $this->error_count = 0; // Reset errors + $this->error_count = 0; //Reset errors $this->mailHeader = ''; - // Dequeue recipient and Reply-To addresses with IDN + //Dequeue recipient and Reply-To addresses with IDN foreach (array_merge($this->RecipientsQueue, $this->ReplyToQueue) as $params) { $params[1] = $this->punyencodeAddress($params[1]); call_user_func_array([$this, 'addAnAddress'], $params); @@ -1500,7 +1526,7 @@ class PHPMailer throw new Exception($this->lang('provide_address'), self::STOP_CRITICAL); } - // Validate From, Sender, and ConfirmReadingTo addresses + //Validate From, Sender, and ConfirmReadingTo addresses foreach (['From', 'Sender', 'ConfirmReadingTo'] as $address_kind) { $this->$address_kind = trim($this->$address_kind); if (empty($this->$address_kind)) { @@ -1524,29 +1550,29 @@ class PHPMailer } } - // Set whether the message is multipart/alternative + //Set whether the message is multipart/alternative if ($this->alternativeExists()) { $this->ContentType = static::CONTENT_TYPE_MULTIPART_ALTERNATIVE; } $this->setMessageType(); - // Refuse to send an empty message unless we are specifically allowing it + //Refuse to send an empty message unless we are specifically allowing it if (!$this->AllowEmpty && empty($this->Body)) { throw new Exception($this->lang('empty_message'), self::STOP_CRITICAL); } //Trim subject consistently $this->Subject = trim($this->Subject); - // Create body before headers in case body makes changes to headers (e.g. altering transfer encoding) + //Create body before headers in case body makes changes to headers (e.g. altering transfer encoding) $this->MIMEHeader = ''; $this->MIMEBody = $this->createBody(); - // createBody may have added some headers, so retain them + //createBody may have added some headers, so retain them $tempheaders = $this->MIMEHeader; $this->MIMEHeader = $this->createHeader(); $this->MIMEHeader .= $tempheaders; - // To capture the complete message when using mail(), create - // an extra header list which createHeader() doesn't fold in + //To capture the complete message when using mail(), create + //an extra header list which createHeader() doesn't fold in if ('mail' === $this->Mailer) { if (count($this->to) > 0) { $this->mailHeader .= $this->addrAppend('To', $this->to); @@ -1559,7 +1585,7 @@ class PHPMailer ); } - // Sign with DKIM if enabled + //Sign with DKIM if enabled if ( !empty($this->DKIM_domain) && !empty($this->DKIM_selector) @@ -1600,7 +1626,7 @@ class PHPMailer public function postSend() { try { - // Choose the mailer and send through it + //Choose the mailer and send through it switch ($this->Mailer) { case 'sendmail': case 'qmail': @@ -1645,22 +1671,44 @@ class PHPMailer */ protected function sendmailSend($header, $body) { + if ($this->Mailer === 'qmail') { + $this->edebug('Sending with qmail'); + } else { + $this->edebug('Sending with sendmail'); + } $header = static::stripTrailingWSP($header) . static::$LE . static::$LE; - - // CVE-2016-10033, CVE-2016-10045: Don't pass -f if characters will be escaped. - if (!empty($this->Sender) && self::isShellSafe($this->Sender)) { - if ('qmail' === $this->Mailer) { + //This sets the SMTP envelope sender which gets turned into a return-path header by the receiver + //A space after `-f` is optional, but there is a long history of its presence + //causing problems, so we don't use one + //Exim docs: http://www.exim.org/exim-html-current/doc/html/spec_html/ch-the_exim_command_line.html + //Sendmail docs: http://www.sendmail.org/~ca/email/man/sendmail.html + //Qmail docs: http://www.qmail.org/man/man8/qmail-inject.html + //Example problem: https://www.drupal.org/node/1057954 + if (empty($this->Sender) && !empty(ini_get('sendmail_from'))) { + //PHP config has a sender address we can use + $this->Sender = ini_get('sendmail_from'); + } + //CVE-2016-10033, CVE-2016-10045: Don't pass -f if characters will be escaped. + if (!empty($this->Sender) && static::validateAddress($this->Sender) && self::isShellSafe($this->Sender)) { + if ($this->Mailer === 'qmail') { $sendmailFmt = '%s -f%s'; } else { $sendmailFmt = '%s -oi -f%s -t'; } - } elseif ('qmail' === $this->Mailer) { - $sendmailFmt = '%s'; } else { + //allow sendmail to choose a default envelope sender. It may + //seem preferable to force it to use the From header as with + //SMTP, but that introduces new problems (see + //), and + //it has historically worked this way. $sendmailFmt = '%s -oi -t'; } $sendmail = sprintf($sendmailFmt, escapeshellcmd($this->Sendmail), $this->Sender); + $this->edebug('Sendmail path: ' . $this->Sendmail); + $this->edebug('Sendmail command: ' . $sendmail); + $this->edebug('Envelope sender: ' . $this->Sender); + $this->edebug("Headers: {$header}"); if ($this->SingleTo) { foreach ($this->SingleToArray as $toAddr) { @@ -1668,13 +1716,15 @@ class PHPMailer if (!$mail) { throw new Exception($this->lang('execute') . $this->Sendmail, self::STOP_CRITICAL); } + $this->edebug("To: {$toAddr}"); fwrite($mail, 'To: ' . $toAddr . "\n"); fwrite($mail, $header); fwrite($mail, $body); $result = pclose($mail); + $addrinfo = static::parseAddresses($toAddr); $this->doCallback( ($result === 0), - [$toAddr], + [[$addrinfo['address'], $addrinfo['name']]], $this->cc, $this->bcc, $this->Subject, @@ -1682,6 +1732,7 @@ class PHPMailer $this->From, [] ); + $this->edebug("Result: " . ($result === 0 ? 'true' : 'false')); if (0 !== $result) { throw new Exception($this->lang('execute') . $this->Sendmail, self::STOP_CRITICAL); } @@ -1704,6 +1755,7 @@ class PHPMailer $this->From, [] ); + $this->edebug("Result: " . ($result === 0 ? 'true' : 'false')); if (0 !== $result) { throw new Exception($this->lang('execute') . $this->Sendmail, self::STOP_CRITICAL); } @@ -1724,7 +1776,7 @@ class PHPMailer */ protected static function isShellSafe($string) { - // Future-proof + //Future-proof if ( escapeshellcmd($string) !== $string || !in_array(escapeshellarg($string), ["'$string'", "\"$string\""]) @@ -1737,9 +1789,9 @@ class PHPMailer for ($i = 0; $i < $length; ++$i) { $c = $string[$i]; - // All other characters have a special meaning in at least one common shell, including = and +. - // Full stop (.) has a special meaning in cmd.exe, but its impact should be negligible here. - // Note that this does permit non-Latin alphanumeric characters based on the current locale. + //All other characters have a special meaning in at least one common shell, including = and +. + //Full stop (.) has a special meaning in cmd.exe, but its impact should be negligible here. + //Note that this does permit non-Latin alphanumeric characters based on the current locale. if (!ctype_alnum($c) && strpos('@_-.', $c) === false) { return false; } @@ -1759,7 +1811,8 @@ class PHPMailer */ protected static function isPermittedPath($path) { - return !preg_match('#^[a-z]+://#i', $path); + //Matches scheme definition from https://tools.ietf.org/html/rfc3986#section-3.1 + return !preg_match('#^[a-z][a-z\d+.-]*://#i', $path); } /** @@ -1771,12 +1824,15 @@ class PHPMailer */ protected static function fileIsAccessible($path) { + if (!static::isPermittedPath($path)) { + return false; + } $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; + return $readable; } /** @@ -1809,11 +1865,15 @@ class PHPMailer //Sendmail docs: http://www.sendmail.org/~ca/email/man/sendmail.html //Qmail docs: http://www.qmail.org/man/man8/qmail-inject.html //Example problem: https://www.drupal.org/node/1057954 - // CVE-2016-10033, CVE-2016-10045: Don't pass -f if characters will be escaped. - if (!empty($this->Sender) && static::validateAddress($this->Sender) && self::isShellSafe($this->Sender)) { - $params = sprintf('-f%s', $this->Sender); + //CVE-2016-10033, CVE-2016-10045: Don't pass -f if characters will be escaped. + if (empty($this->Sender) && !empty(ini_get('sendmail_from'))) { + //PHP config has a sender address we can use + $this->Sender = ini_get('sendmail_from'); } if (!empty($this->Sender) && static::validateAddress($this->Sender)) { + if (self::isShellSafe($this->Sender)) { + $params = sprintf('-f%s', $this->Sender); + } $old_from = ini_get('sendmail_from'); ini_set('sendmail_from', $this->Sender); } @@ -1821,7 +1881,17 @@ class PHPMailer if ($this->SingleTo && count($toArr) > 1) { foreach ($toArr as $toAddr) { $result = $this->mailPassthru($toAddr, $this->Subject, $body, $header, $params); - $this->doCallback($result, [$toAddr], $this->cc, $this->bcc, $this->Subject, $body, $this->From, []); + $addrinfo = static::parseAddresses($toAddr); + $this->doCallback( + $result, + [[$addrinfo['address'], $addrinfo['name']]], + $this->cc, + $this->bcc, + $this->Subject, + $body, + $this->From, + [] + ); } } else { $result = $this->mailPassthru($to, $this->Subject, $body, $header, $params); @@ -1899,7 +1969,7 @@ class PHPMailer } $callbacks = []; - // Attempt to send to all recipients + //Attempt to send to all recipients foreach ([$this->to, $this->cc, $this->bcc] as $togroup) { foreach ($togroup as $to) { if (!$this->smtp->recipient($to[0], $this->dsn)) { @@ -1910,11 +1980,11 @@ class PHPMailer $isSent = true; } - $callbacks[] = ['issent' => $isSent, 'to' => $to[0]]; + $callbacks[] = ['issent' => $isSent, 'to' => $to[0], 'name' => $to[1]]; } } - // Only send the DATA command if we have viable recipients + //Only send the DATA command if we have viable recipients if ((count($this->all_recipients) > count($bad_rcpt)) && !$this->smtp->data($header . $body)) { throw new Exception($this->lang('data_not_accepted'), self::STOP_CRITICAL); } @@ -1931,7 +2001,7 @@ class PHPMailer foreach ($callbacks as $cb) { $this->doCallback( $cb['issent'], - [$cb['to']], + [[$cb['to'], $cb['name']]], [], [], $this->Subject, @@ -1976,7 +2046,7 @@ class PHPMailer $options = $this->SMTPOptions; } - // Already connected? + //Already connected? if ($this->smtp->connected()) { return true; } @@ -1998,14 +2068,14 @@ class PHPMailer ) ) { $this->edebug($this->lang('invalid_hostentry') . ' ' . trim($hostentry)); - // Not a valid host entry + //Not a valid host entry continue; } - // $hostinfo[1]: optional ssl or tls prefix - // $hostinfo[2]: the hostname - // $hostinfo[3]: optional port number - // The host string prefix can temporarily override the current setting for SMTPSecure - // If it's not specified, the default value is used + //$hostinfo[1]: optional ssl or tls prefix + //$hostinfo[2]: the hostname + //$hostinfo[3]: optional port number + //The host string prefix can temporarily override the current setting for SMTPSecure + //If it's not specified, the default value is used //Check the host name is a valid name or IP address before trying to use it if (!static::isValidHost($hostinfo[2])) { @@ -2017,11 +2087,11 @@ class PHPMailer $tls = (static::ENCRYPTION_STARTTLS === $this->SMTPSecure); if ('ssl' === $hostinfo[1] || ('' === $hostinfo[1] && static::ENCRYPTION_SMTPS === $this->SMTPSecure)) { $prefix = 'ssl://'; - $tls = false; // Can't have SSL and TLS at the same time + $tls = false; //Can't have SSL and TLS at the same time $secure = static::ENCRYPTION_SMTPS; } elseif ('tls' === $hostinfo[1]) { $tls = true; - // tls doesn't use a prefix + //TLS doesn't use a prefix $secure = static::ENCRYPTION_STARTTLS; } //Do we need the OpenSSL extension? @@ -2051,10 +2121,10 @@ class PHPMailer } $this->smtp->hello($hello); //Automatically enable TLS encryption if: - // * it's not disabled - // * we have openssl extension - // * we are not already using SSL - // * the server offers STARTTLS + //* it's not disabled + //* we have openssl extension + //* we are not already using SSL + //* the server offers STARTTLS if ($this->SMTPAutoTLS && $sslext && 'ssl' !== $secure && $this->smtp->getServerExt('STARTTLS')) { $tls = true; } @@ -2062,7 +2132,7 @@ class PHPMailer if (!$this->smtp->startTLS()) { throw new Exception($this->lang('connect_host')); } - // We must resend EHLO after TLS negotiation + //We must resend EHLO after TLS negotiation $this->smtp->hello($hello); } if ( @@ -2080,14 +2150,14 @@ class PHPMailer } catch (Exception $exc) { $lastexception = $exc; $this->edebug($exc->getMessage()); - // We must have connected, but then failed TLS or Auth, so close connection nicely + //We must have connected, but then failed TLS or Auth, so close connection nicely $this->smtp->quit(); } } } - // If we get here, all connection attempts have failed, so close connection hard + //If we get here, all connection attempts have failed, so close connection hard $this->smtp->close(); - // As we've caught all exceptions, just report whatever the last one was + //As we've caught all exceptions, just report whatever the last one was if ($this->exceptions && null !== $lastexception) { throw $lastexception; } @@ -2118,7 +2188,7 @@ class PHPMailer */ public function setLanguage($langcode = 'en', $lang_path = '') { - // Backwards compatibility for renamed language codes + //Backwards compatibility for renamed language codes $renamed_langcodes = [ 'br' => 'pt_br', 'cz' => 'cs', @@ -2134,7 +2204,7 @@ class PHPMailer $langcode = $renamed_langcodes[$langcode]; } - // Define full set of translatable strings in English + //Define full set of translatable strings in English $PHPMAILER_LANG = [ 'authenticate' => 'SMTP Error: Could not authenticate.', 'connect_host' => 'SMTP Error: Could not connect to SMTP host.', @@ -2159,7 +2229,7 @@ class PHPMailer 'extension_missing' => 'Extension missing: ', ]; if (empty($lang_path)) { - // Calculate an absolute path so it can work if CWD is not here + //Calculate an absolute path so it can work if CWD is not here $lang_path = dirname(__DIR__) . DIRECTORY_SEPARATOR . 'language' . DIRECTORY_SEPARATOR; } //Validate $langcode @@ -2168,20 +2238,20 @@ class PHPMailer } $foundlang = true; $lang_file = $lang_path . 'phpmailer.lang-' . $langcode . '.php'; - // There is no English translation file + //There is no English translation file if ('en' !== $langcode) { - // Make sure language file path is readable + //Make sure language file path is readable if (!static::fileIsAccessible($lang_file)) { $foundlang = false; } else { - // Overwrite language-specific strings. - // This way we'll never have missing translation keys. + //Overwrite language-specific strings. + //This way we'll never have missing translation keys. $foundlang = include $lang_file; } } $this->language = $PHPMAILER_LANG; - return (bool) $foundlang; // Returns false if language not found + return (bool) $foundlang; //Returns false if language not found } /** @@ -2225,7 +2295,7 @@ class PHPMailer */ public function addrFormat($addr) { - if (empty($addr[1])) { // No name provided + if (empty($addr[1])) { //No name provided return $this->secureHeader($addr[0]); } @@ -2252,8 +2322,8 @@ class PHPMailer } else { $soft_break = static::$LE; } - // If utf-8 encoding is used, we will need to make sure we don't - // split multibyte characters when we wrap + //If utf-8 encoding is used, we will need to make sure we don't + //split multibyte characters when we wrap $is_utf8 = static::CHARSET_UTF8 === strtolower($this->CharSet); $lelen = strlen(static::$LE); $crlflen = strlen(static::$LE); @@ -2353,29 +2423,29 @@ class PHPMailer $lastChunk = substr($encodedText, $maxLength - $lookBack, $lookBack); $encodedCharPos = strpos($lastChunk, '='); if (false !== $encodedCharPos) { - // Found start of encoded character byte within $lookBack block. - // Check the encoded byte value (the 2 chars after the '=') + //Found start of encoded character byte within $lookBack block. + //Check the encoded byte value (the 2 chars after the '=') $hex = substr($encodedText, $maxLength - $lookBack + $encodedCharPos + 1, 2); $dec = hexdec($hex); if ($dec < 128) { - // Single byte character. - // If the encoded char was found at pos 0, it will fit - // otherwise reduce maxLength to start of the encoded char + //Single byte character. + //If the encoded char was found at pos 0, it will fit + //otherwise reduce maxLength to start of the encoded char if ($encodedCharPos > 0) { $maxLength -= $lookBack - $encodedCharPos; } $foundSplitPos = true; } elseif ($dec >= 192) { - // First byte of a multi byte character - // Reduce maxLength to split at start of character + //First byte of a multi byte character + //Reduce maxLength to split at start of character $maxLength -= $lookBack - $encodedCharPos; $foundSplitPos = true; } elseif ($dec < 192) { - // Middle byte of a multi byte character, look further back + //Middle byte of a multi byte character, look further back $lookBack += 3; } } else { - // No encoded character found + //No encoded character found $foundSplitPos = true; } } @@ -2419,7 +2489,7 @@ class PHPMailer $result .= $this->headerLine('Date', '' === $this->MessageDate ? self::rfcDate() : $this->MessageDate); - // The To header is created automatically by mail(), so needs to be omitted here + //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) { @@ -2433,12 +2503,12 @@ class PHPMailer } $result .= $this->addrAppend('From', [[trim($this->From), $this->FromName]]); - // sendmail and mail() extract Cc from the header before sending + //sendmail and mail() extract Cc from the header before sending if (count($this->cc) > 0) { $result .= $this->addrAppend('Cc', $this->cc); } - // sendmail and mail() extract Bcc from the header before sending + //sendmail and mail() extract Bcc from the header before sending if ( ( 'sendmail' === $this->Mailer || 'qmail' === $this->Mailer || 'mail' === $this->Mailer @@ -2452,13 +2522,13 @@ class PHPMailer $result .= $this->addrAppend('Reply-To', $this->ReplyTo); } - // mail() sets the subject itself + //mail() sets the subject itself if ('mail' !== $this->Mailer) { $result .= $this->headerLine('Subject', $this->encodeHeader($this->secureHeader($this->Subject))); } - // Only allow a custom message ID if it conforms to RFC 5322 section 3.6.4 - // https://tools.ietf.org/html/rfc5322#section-3.6.4 + //Only allow a custom message ID if it conforms to RFC 5322 section 3.6.4 + //https://tools.ietf.org/html/rfc5322#section-3.6.4 if ('' !== $this->MessageID && preg_match('/^<.*@.*>$/', $this->MessageID)) { $this->lastMessageID = $this->MessageID; } else { @@ -2484,7 +2554,7 @@ class PHPMailer $result .= $this->headerLine('Disposition-Notification-To', '<' . $this->ConfirmReadingTo . '>'); } - // Add custom headers + //Add custom headers foreach ($this->CustomHeader as $header) { $result .= $this->headerLine( trim($header[0]), @@ -2526,28 +2596,24 @@ class PHPMailer $result .= $this->textLine(' boundary="' . $this->boundary[1] . '"'); break; default: - // Catches case 'plain': and case '': + //Catches case 'plain': and case '': $result .= $this->textLine('Content-Type: ' . $this->ContentType . '; charset=' . $this->CharSet); $ismultipart = false; break; } - // RFC1341 part 5 says 7bit is assumed if not specified + //RFC1341 part 5 says 7bit is assumed if not specified if (static::ENCODING_7BIT !== $this->Encoding) { - // RFC 2045 section 6.4 says multipart MIME parts may only use 7bit, 8bit or binary CTE + //RFC 2045 section 6.4 says multipart MIME parts may only use 7bit, 8bit or binary CTE if ($ismultipart) { if (static::ENCODING_8BIT === $this->Encoding) { $result .= $this->headerLine('Content-Transfer-Encoding', static::ENCODING_8BIT); } - // The only remaining alternatives are quoted-printable and base64, which are both 7bit compatible + //The only remaining alternatives are quoted-printable and base64, which are both 7bit compatible } else { $result .= $this->headerLine('Content-Transfer-Encoding', $this->Encoding); } } - if ('mail' !== $this->Mailer) { -// $result .= static::$LE; - } - return $result; } @@ -2816,7 +2882,7 @@ class PHPMailer $body .= $this->attachAll('attachment', $this->boundary[1]); break; default: - // Catch case 'plain' and case '', applies to simple `text/plain` and `text/html` body content types + //Catch case 'plain' and case '', applies to simple `text/plain` and `text/html` body content types //Reset the `Encoding` property in case we changed it for line length reasons $this->Encoding = $bodyEncoding; $body .= $this->encodeString($this->Body, $this->Encoding); @@ -2907,7 +2973,7 @@ class PHPMailer $result .= $this->textLine('--' . $boundary); $result .= sprintf('Content-Type: %s; charset=%s', $contentType, $charSet); $result .= static::$LE; - // RFC1341 part 5 says 7bit is assumed if not specified + //RFC1341 part 5 says 7bit is assumed if not specified if (static::ENCODING_7BIT !== $encoding) { $result .= $this->headerLine('Content-Transfer-Encoding', $encoding); } @@ -3005,7 +3071,7 @@ class PHPMailer throw new Exception($this->lang('file_access') . $path, self::STOP_CONTINUE); } - // If a MIME type is not specified, try to work it out from the file name + //If a MIME type is not specified, try to work it out from the file name if ('' === $type) { $type = static::filenameToType($path); } @@ -3024,7 +3090,7 @@ class PHPMailer 2 => $name, 3 => $encoding, 4 => $type, - 5 => false, // isStringAttachment + 5 => false, //isStringAttachment 6 => $disposition, 7 => $name, ]; @@ -3064,16 +3130,16 @@ class PHPMailer */ protected function attachAll($disposition_type, $boundary) { - // Return text of body + //Return text of body $mime = []; $cidUniq = []; $incl = []; - // Add all attachments + //Add all attachments foreach ($this->attachment as $attachment) { - // Check if it is a valid disposition_filter + //Check if it is a valid disposition_filter if ($attachment[6] === $disposition_type) { - // Check for string attachment + //Check for string attachment $string = ''; $path = ''; $bString = $attachment[5]; @@ -3114,7 +3180,7 @@ class PHPMailer static::$LE ); } - // RFC1341 part 5 says 7bit is assumed if not specified + //RFC1341 part 5 says 7bit is assumed if not specified if (static::ENCODING_7BIT !== $encoding) { $mime[] = sprintf('Content-Transfer-Encoding: %s%s', $encoding, static::$LE); } @@ -3124,7 +3190,7 @@ class PHPMailer $mime[] = 'Content-ID: <' . $this->encodeHeader($this->secureHeader($cid)) . '>' . static::$LE; } - // Allow for bypassing the Content-Disposition header + //Allow for bypassing the Content-Disposition header if (!empty($disposition)) { $encoded_name = $this->encodeHeader($this->secureHeader($name)); if (!empty($encoded_name)) { @@ -3145,7 +3211,7 @@ class PHPMailer $mime[] = static::$LE; } - // Encode as string attachment + //Encode as string attachment if ($bString) { $mime[] = $this->encodeString($string, $encoding); } else { @@ -3221,7 +3287,7 @@ class PHPMailer case static::ENCODING_7BIT: case static::ENCODING_8BIT: $encoded = static::normalizeBreaks($str); - // Make sure it ends with a line break + //Make sure it ends with a line break if (substr($encoded, -(strlen(static::$LE))) !== static::$LE) { $encoded .= static::$LE; } @@ -3259,7 +3325,7 @@ class PHPMailer switch (strtolower($position)) { case 'phrase': if (!preg_match('/[\200-\377]/', $str)) { - // Can't use addslashes as we don't know the value of magic_quotes_sybase + //Can't use addslashes as we don't know the value of magic_quotes_sybase $encoded = addcslashes($str, "\0..\37\177\\\""); if (($str === $encoded) && !preg_match('/[^A-Za-z0-9!#$%&\'*+\/=?^_`{|}~ -]/', $str)) { return $encoded; @@ -3285,7 +3351,7 @@ class PHPMailer $charset = static::CHARSET_ASCII; } - // Q/B encoding adds 8 chars and the charset ("` =??[QB]??=`"). + //Q/B encoding adds 8 chars and the charset ("` =??[QB]??=`"). $overhead = 8 + strlen($charset); if ('mail' === $this->Mailer) { @@ -3294,26 +3360,26 @@ class PHPMailer $maxlen = static::MAX_LINE_LENGTH - $overhead; } - // Select the encoding that produces the shortest output and/or prevents corruption. + //Select the encoding that produces the shortest output and/or prevents corruption. if ($matchcount > strlen($str) / 3) { - // More than 1/3 of the content needs encoding, use B-encode. + //More than 1/3 of the content needs encoding, use B-encode. $encoding = 'B'; } elseif ($matchcount > 0) { - // Less than 1/3 of the content needs encoding, use Q-encode. + //Less than 1/3 of the content needs encoding, use Q-encode. $encoding = 'Q'; } elseif (strlen($str) > $maxlen) { - // No encoding needed, but value exceeds max line length, use Q-encode to prevent corruption. + //No encoding needed, but value exceeds max line length, use Q-encode to prevent corruption. $encoding = 'Q'; } else { - // No reformatting needed + //No reformatting needed $encoding = false; } switch ($encoding) { case 'B': if ($this->hasMultiBytes($str)) { - // Use a custom function which correctly encodes and wraps long - // multibyte strings without breaking lines within a character + //Use a custom function which correctly encodes and wraps long + //multibyte strings without breaking lines within a character $encoded = $this->base64EncodeWrapMB($str, "\n"); } else { $encoded = base64_encode($str); @@ -3348,7 +3414,7 @@ class PHPMailer return strlen($str) > mb_strlen($str, $this->CharSet); } - // Assume no multibytes (we can't handle without mbstring functions anyway) + //Assume no multibytes (we can't handle without mbstring functions anyway) return false; } @@ -3386,11 +3452,11 @@ class PHPMailer } $mb_length = mb_strlen($str, $this->CharSet); - // Each line must have length <= 75, including $start and $end + //Each line must have length <= 75, including $start and $end $length = 75 - strlen($start) - strlen($end); - // Average multi-byte ratio + //Average multi-byte ratio $ratio = $mb_length / strlen($str); - // Base64 has a 4:3 ratio + //Base64 has a 4:3 ratio $avgLength = floor($length * $ratio * .75); $offset = 0; @@ -3405,7 +3471,7 @@ class PHPMailer $encoded .= $chunk . $linebreak; } - // Chomp the last linefeed + //Chomp the last linefeed return substr($encoded, 0, -strlen($linebreak)); } @@ -3434,12 +3500,12 @@ class PHPMailer */ public function encodeQ($str, $position = 'text') { - // There should not be any EOL in the string + //There should not be any EOL in the string $pattern = ''; $encoded = str_replace(["\r", "\n"], '', $str); switch (strtolower($position)) { case 'phrase': - // RFC 2047 section 5.3 + //RFC 2047 section 5.3 $pattern = '^A-Za-z0-9!*+\/ -'; break; /* @@ -3452,15 +3518,15 @@ class PHPMailer /* Intentional fall through */ case 'text': default: - // RFC 2047 section 5.1 - // Replace every high ascii, control, =, ? and _ characters + //RFC 2047 section 5.1 + //Replace every high ascii, control, =, ? and _ characters $pattern = '\000-\011\013\014\016-\037\075\077\137\177-\377' . $pattern; break; } $matches = []; if (preg_match_all("/[{$pattern}]/", $encoded, $matches)) { - // If the string contains an '=', make sure it's the first thing we replace - // so as to avoid double-encoding + //If the string contains an '=', make sure it's the first thing we replace + //so as to avoid double-encoding $eqkey = array_search('=', $matches[0], true); if (false !== $eqkey) { unset($matches[0][$eqkey]); @@ -3470,8 +3536,8 @@ class PHPMailer $encoded = str_replace($char, '=' . sprintf('%02X', ord($char)), $encoded); } } - // Replace spaces with _ (more readable than =20) - // RFC 2047 section 4.2(2) + //Replace spaces with _ (more readable than =20) + //RFC 2047 section 4.2(2) return str_replace(' ', '_', $encoded); } @@ -3498,7 +3564,7 @@ class PHPMailer $disposition = 'attachment' ) { try { - // If a MIME type is not specified, try to work it out from the file name + //If a MIME type is not specified, try to work it out from the file name if ('' === $type) { $type = static::filenameToType($filename); } @@ -3507,14 +3573,14 @@ class PHPMailer throw new Exception($this->lang('encoding') . $encoding); } - // Append to $attachment array + //Append to $attachment array $this->attachment[] = [ 0 => $string, 1 => $filename, 2 => static::mb_pathinfo($filename, PATHINFO_BASENAME), 3 => $encoding, 4 => $type, - 5 => true, // isStringAttachment + 5 => true, //isStringAttachment 6 => $disposition, 7 => 0, ]; @@ -3565,7 +3631,7 @@ class PHPMailer throw new Exception($this->lang('file_access') . $path, self::STOP_CONTINUE); } - // If a MIME type is not specified, try to work it out from the file name + //If a MIME type is not specified, try to work it out from the file name if ('' === $type) { $type = static::filenameToType($path); } @@ -3579,14 +3645,14 @@ class PHPMailer $name = $filename; } - // Append to $attachment array + //Append to $attachment array $this->attachment[] = [ 0 => $path, 1 => $filename, 2 => $name, 3 => $encoding, 4 => $type, - 5 => false, // isStringAttachment + 5 => false, //isStringAttachment 6 => $disposition, 7 => $cid, ]; @@ -3631,7 +3697,7 @@ class PHPMailer $disposition = 'inline' ) { try { - // If a MIME type is not specified, try to work it out from the name + //If a MIME type is not specified, try to work it out from the name if ('' === $type && !empty($name)) { $type = static::filenameToType($name); } @@ -3640,14 +3706,14 @@ class PHPMailer throw new Exception($this->lang('encoding') . $encoding); } - // Append to $attachment array + //Append to $attachment array $this->attachment[] = [ 0 => $string, 1 => $name, 2 => $name, 3 => $encoding, 4 => $type, - 5 => true, // isStringAttachment + 5 => true, //isStringAttachment 6 => $disposition, 7 => $cid, ]; @@ -3867,8 +3933,8 @@ class PHPMailer */ public static function rfcDate() { - // Set the time zone to whatever the default is to avoid 500 errors - // Will default to UTC if it's not set properly in php.ini + //Set the time zone to whatever the default is to avoid 500 errors + //Will default to UTC if it's not set properly in php.ini date_default_timezone_set(@date_default_timezone_get()); return date('D, j M Y H:i:s O'); @@ -3946,13 +4012,13 @@ class PHPMailer protected function lang($key) { if (count($this->language) < 1) { - $this->setLanguage(); // set the default language + $this->setLanguage(); //Set the default language } if (array_key_exists($key, $this->language)) { if ('smtp_connect_failed' === $key) { - //Include a link to troubleshooting docs on SMTP connection failure - //this is by far the biggest cause of support questions + //Include a link to troubleshooting docs on SMTP connection failure. + //This is by far the biggest cause of support questions //but it's usually not PHPMailer's fault. return $this->language[$key] . ' https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting'; } @@ -3987,7 +4053,7 @@ class PHPMailer public function addCustomHeader($name, $value = null) { if (null === $value && strpos($name, ':') !== false) { - // Value passed in as name:value + //Value passed in as name:value list($name, $value) = explode(':', $name, 2); } $name = trim($name); @@ -4041,11 +4107,11 @@ class PHPMailer preg_match_all('/(? 1 && '/' !== substr($basedir, -1)) { - // Ensure $basedir has a trailing / + //Ensure $basedir has a trailing / $basedir .= '/'; } foreach ($images[2] as $imgindex => $url) { - // Convert data URIs into embedded images + //Convert data URIs into embedded images //e.g. "data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" $match = []; if (preg_match('#^data:(image/(?:jpe?g|gif|png));?(base64)?,(.+)#', $url, $match)) { @@ -4059,7 +4125,7 @@ class PHPMailer } //Hash the decoded data, not the URL, so that the same data-URI image used in multiple places //will only be embedded once, even if it used a different encoding - $cid = substr(hash('sha256', $data), 0, 32) . '@phpmailer.0'; // RFC2392 S 2 + $cid = substr(hash('sha256', $data), 0, 32) . '@phpmailer.0'; //RFC2392 S 2 if (!$this->cidExists($cid)) { $this->addStringEmbeddedImage( @@ -4078,13 +4144,13 @@ class PHPMailer continue; } if ( - // Only process relative URLs if a basedir is provided (i.e. no absolute local paths) + //Only process relative URLs if a basedir is provided (i.e. no absolute local paths) !empty($basedir) - // Ignore URLs containing parent dir traversal (..) + //Ignore URLs containing parent dir traversal (..) && (strpos($url, '..') === false) - // Do not change urls that are already inline images + //Do not change urls that are already inline images && 0 !== strpos($url, 'cid:') - // Do not change absolute URLs, including anonymous protocol + //Do not change absolute URLs, including anonymous protocol && !preg_match('#^[a-z][a-z0-9+.-]*:?//#i', $url) ) { $filename = static::mb_pathinfo($url, PATHINFO_BASENAME); @@ -4092,7 +4158,7 @@ class PHPMailer if ('.' === $directory) { $directory = ''; } - // RFC2392 S 2 + //RFC2392 S 2 $cid = substr(hash('sha256', $url), 0, 32) . '@phpmailer.0'; if (strlen($basedir) > 1 && '/' !== substr($basedir, -1)) { $basedir .= '/'; @@ -4119,7 +4185,7 @@ class PHPMailer } } $this->isHTML(); - // Convert all message body line breaks to LE, makes quoted-printable encoding work much better + //Convert all message body line breaks to LE, makes quoted-printable encoding work much better $this->Body = static::normalizeBreaks($message); $this->AltBody = static::normalizeBreaks($this->html2text($message, $advanced)); if (!$this->alternativeExists()) { @@ -4138,9 +4204,9 @@ class PHPMailer * Example usage: * * ```php - * // Use default conversion + * //Use default conversion * $plain = $mail->html2text($html); - * // Use your own custom converter + * //Use your own custom converter * $plain = $mail->html2text($html, function($html) { * $converter = new MyHtml2text($html); * return $converter->get_text(); @@ -4307,7 +4373,7 @@ class PHPMailer */ public static function filenameToType($filename) { - // In case the path is a URL, strip any query string before getting extension + //In case the path is a URL, strip any query string before getting extension $qpos = strpos($filename, '?'); if (false !== $qpos) { $filename = substr($filename, 0, $qpos); @@ -4418,9 +4484,9 @@ class PHPMailer if (null === $breaktype) { $breaktype = static::$LE; } - // Normalise to \n + //Normalise to \n $text = str_replace([self::CRLF, "\r"], "\n", $text); - // Now convert LE as needed + //Now convert LE as needed if ("\n" !== $breaktype) { $text = str_replace("\n", $breaktype, $text); } @@ -4526,13 +4592,13 @@ class PHPMailer $privKey = openssl_pkey_get_private($privKeyStr); } if (openssl_sign($signHeader, $signature, $privKey, 'sha256WithRSAEncryption')) { - if (PHP_MAJOR_VERSION < 8) { + if (\PHP_MAJOR_VERSION < 8) { openssl_pkey_free($privKey); } return base64_encode($signature); } - if (PHP_MAJOR_VERSION < 8) { + if (\PHP_MAJOR_VERSION < 8) { openssl_pkey_free($privKey); } @@ -4599,7 +4665,7 @@ class PHPMailer if (empty($body)) { return self::CRLF; } - // Normalize line endings to CRLF + //Normalize line endings to CRLF $body = static::normalizeBreaks($body, self::CRLF); //Reduce multiple trailing line breaks to a single one @@ -4619,9 +4685,9 @@ class PHPMailer */ public function DKIM_Add($headers_line, $subject, $body) { - $DKIMsignatureType = 'rsa-sha256'; // Signature & hash algorithms - $DKIMcanonicalization = 'relaxed/simple'; // Canonicalization methods of header & body - $DKIMquery = 'dns/txt'; // Query method + $DKIMsignatureType = 'rsa-sha256'; //Signature & hash algorithms + $DKIMcanonicalization = 'relaxed/simple'; //Canonicalization methods of header & body + $DKIMquery = 'dns/txt'; //Query method $DKIMtime = time(); //Always sign these headers without being asked //Recommended list from https://tools.ietf.org/html/rfc6376#section-5.4.1 @@ -4722,7 +4788,8 @@ class PHPMailer $headerKeys = ' h=' . implode(':', $headersToSignKeys) . ';' . static::$LE; $headerValues = implode(static::$LE, $headersToSign); $body = $this->DKIM_BodyC($body); - $DKIMb64 = base64_encode(pack('H*', hash('sha256', $body))); // Base64 of packed binary SHA-256 hash of body + //Base64 of packed binary SHA-256 hash of body + $DKIMb64 = base64_encode(pack('H*', hash('sha256', $body))); $ident = ''; if ('' !== $this->DKIM_identity) { $ident = ' i=' . $this->DKIM_identity . ';' . static::$LE; diff --git a/kirby/vendor/phpmailer/phpmailer/src/POP3.php b/kirby/vendor/phpmailer/phpmailer/src/POP3.php index 235e637..a39f480 100755 --- a/kirby/vendor/phpmailer/phpmailer/src/POP3.php +++ b/kirby/vendor/phpmailer/phpmailer/src/POP3.php @@ -46,7 +46,7 @@ class POP3 * * @var string */ - const VERSION = '6.2.0'; + const VERSION = '6.4.1'; /** * Default POP3 port number. @@ -199,13 +199,13 @@ class POP3 public function authorise($host, $port = false, $timeout = false, $username = '', $password = '', $debug_level = 0) { $this->host = $host; - // If no port value provided, use default + //If no port value provided, use default if (false === $port) { $this->port = static::DEFAULT_PORT; } else { $this->port = (int) $port; } - // If no timeout value provided, use default + //If no timeout value provided, use default if (false === $timeout) { $this->tval = static::DEFAULT_TIMEOUT; } else { @@ -214,9 +214,9 @@ class POP3 $this->do_debug = $debug_level; $this->username = $username; $this->password = $password; - // Reset the error log + //Reset the error log $this->errors = []; - // connect + //Connect $result = $this->connect($this->host, $this->port, $this->tval); if ($result) { $login_result = $this->login($this->username, $this->password); @@ -226,7 +226,7 @@ class POP3 return true; } } - // We need to disconnect regardless of whether the login succeeded + //We need to disconnect regardless of whether the login succeeded $this->disconnect(); return false; @@ -243,7 +243,7 @@ class POP3 */ public function connect($host, $port = false, $tval = 30) { - // Are we already connected? + //Are we already connected? if ($this->connected) { return true; } @@ -256,22 +256,22 @@ class POP3 $port = static::DEFAULT_PORT; } - // connect to the POP3 server + //Connect to the POP3 server $errno = 0; $errstr = ''; $this->pop_conn = fsockopen( - $host, // POP3 Host - $port, // Port # - $errno, // Error Number - $errstr, // Error Message + $host, //POP3 Host + $port, //Port # + $errno, //Error Number + $errstr, //Error Message $tval - ); // Timeout (seconds) - // Restore the error handler + ); //Timeout (seconds) + //Restore the error handler restore_error_handler(); - // Did we connect? + //Did we connect? if (false === $this->pop_conn) { - // It would appear not... + //It would appear not... $this->setError( "Failed to connect to server $host on port $port. errno: $errno; errstr: $errstr" ); @@ -279,14 +279,14 @@ class POP3 return false; } - // Increase the stream time-out + //Increase the stream time-out stream_set_timeout($this->pop_conn, $tval, 0); - // Get the POP3 server response + //Get the POP3 server response $pop3_response = $this->getResponse(); - // Check for the +OK + //Check for the +OK if ($this->checkResponse($pop3_response)) { - // The connection is established and the POP3 server is talking + //The connection is established and the POP3 server is talking $this->connected = true; return true; @@ -316,11 +316,11 @@ class POP3 $password = $this->password; } - // Send the Username + //Send the Username $this->sendString("USER $username" . static::LE); $pop3_response = $this->getResponse(); if ($this->checkResponse($pop3_response)) { - // Send the Password + //Send the Password $this->sendString("PASS $password" . static::LE); $pop3_response = $this->getResponse(); if ($this->checkResponse($pop3_response)) { diff --git a/kirby/vendor/phpmailer/phpmailer/src/SMTP.php b/kirby/vendor/phpmailer/phpmailer/src/SMTP.php index ab7f46e..0e7f53d 100755 --- a/kirby/vendor/phpmailer/phpmailer/src/SMTP.php +++ b/kirby/vendor/phpmailer/phpmailer/src/SMTP.php @@ -35,7 +35,7 @@ class SMTP * * @var string */ - const VERSION = '6.2.0'; + const VERSION = '6.4.1'; /** * SMTP line break constant. @@ -312,11 +312,11 @@ class SMTP */ public function connect($host, $port = null, $timeout = 30, $options = []) { - // Clear errors to avoid confusion + //Clear errors to avoid confusion $this->setError(''); - // Make sure we are __not__ connected + //Make sure we are __not__ connected if ($this->connected()) { - // Already connected, generate error + //Already connected, generate error $this->setError('Already connected to a server'); return false; @@ -324,7 +324,7 @@ class SMTP if (empty($port)) { $port = self::DEFAULT_PORT; } - // Connect to the SMTP server + //Connect to the SMTP server $this->edebug( "Connection: opening to $host:$port, timeout=$timeout, options=" . (count($options) > 0 ? var_export($options, true) : 'array()'), @@ -340,11 +340,23 @@ class SMTP $this->edebug('Connection: opened', self::DEBUG_CONNECTION); - // Get any announcement + //Get any announcement $this->last_reply = $this->get_lines(); $this->edebug('SERVER -> CLIENT: ' . $this->last_reply, self::DEBUG_SERVER); - - return true; + $responseCode = (int)substr($this->last_reply, 0, 3); + if ($responseCode === 220) { + return true; + } + //Anything other than a 220 response means something went wrong + //RFC 5321 says the server will wait for us to send a QUIT in response to a 554 error + //https://tools.ietf.org/html/rfc5321#section-3.1 + if ($responseCode === 554) { + $this->quit(); + } + //This will handle 421 responses which may not wait for a QUIT (e.g. if the server is being shut down) + $this->edebug('Connection: closing due to error', self::DEBUG_CONNECTION); + $this->close(); + return false; } /** @@ -397,7 +409,7 @@ class SMTP restore_error_handler(); } - // Verify we connected properly + //Verify we connected properly if (!is_resource($connection)) { $this->setError( 'Failed to connect to server', @@ -414,11 +426,11 @@ class SMTP return false; } - // SMTP server can take longer to respond, give longer timeout for first read - // Windows does not have support for this timeout function + //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, or if set_time_limit is disabled + //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); } @@ -449,7 +461,7 @@ class SMTP $crypto_method |= STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT; } - // Begin encrypted connection + //Begin encrypted connection set_error_handler([$this, 'errorHandler']); $crypto_ok = stream_socket_enable_crypto( $this->smtp_conn, @@ -487,11 +499,11 @@ class SMTP } if (array_key_exists('EHLO', $this->server_caps)) { - // SMTP extensions are available; try to find a proper authentication method + //SMTP extensions are available; try to find a proper authentication method if (!array_key_exists('AUTH', $this->server_caps)) { $this->setError('Authentication is not allowed at this stage'); - // 'at this stage' means that auth may be allowed after the stage changes - // e.g. after STARTTLS + //'at this stage' means that auth may be allowed after the stage changes + //e.g. after STARTTLS return false; } @@ -535,12 +547,14 @@ class SMTP } switch ($authtype) { case 'PLAIN': - // Start authentication + //Start authentication if (!$this->sendCommand('AUTH', 'AUTH PLAIN', 334)) { return false; } - // Send encoded username and password + //Send encoded username and password if ( + //Format from https://tools.ietf.org/html/rfc4616#section-2 + //We skip the first field (it's forgery), so the string starts with a null byte !$this->sendCommand( 'User & Password', base64_encode("\0" . $username . "\0" . $password), @@ -551,7 +565,7 @@ class SMTP } break; case 'LOGIN': - // Start authentication + //Start authentication if (!$this->sendCommand('AUTH', 'AUTH LOGIN', 334)) { return false; } @@ -563,17 +577,17 @@ class SMTP } break; case 'CRAM-MD5': - // Start authentication + //Start authentication if (!$this->sendCommand('AUTH CRAM-MD5', 'AUTH CRAM-MD5', 334)) { return false; } - // Get the challenge + //Get the challenge $challenge = base64_decode(substr($this->last_reply, 4)); - // Build the response + //Build the response $response = $username . ' ' . $this->hmac($challenge, $password); - // send encoded credentials + //send encoded credentials return $this->sendCommand('Username', base64_encode($response), 235); case 'XOAUTH2': //The OAuth instance must be set up prior to requesting auth. @@ -582,7 +596,7 @@ class SMTP } $oauth = $OAuth->getOauth64(); - // Start authentication + //Start authentication if (!$this->sendCommand('AUTH', 'AUTH XOAUTH2 ' . $oauth, 235)) { return false; } @@ -612,15 +626,15 @@ class SMTP return hash_hmac('md5', $data, $key); } - // The following borrowed from - // http://php.net/manual/en/function.mhash.php#27225 + //The following borrowed from + //http://php.net/manual/en/function.mhash.php#27225 - // RFC 2104 HMAC implementation for php. - // Creates an md5 HMAC. - // Eliminates the need to install mhash to compute a HMAC - // by Lance Rushing + //RFC 2104 HMAC implementation for php. + //Creates an md5 HMAC. + //Eliminates the need to install mhash to compute a HMAC + //by Lance Rushing - $bytelen = 64; // byte length for md5 + $bytelen = 64; //byte length for md5 if (strlen($key) > $bytelen) { $key = pack('H*', md5($key)); } @@ -643,7 +657,7 @@ class SMTP if (is_resource($this->smtp_conn)) { $sock_status = stream_get_meta_data($this->smtp_conn); if ($sock_status['eof']) { - // The socket is valid but we are not connected + //The socket is valid but we are not connected $this->edebug( 'SMTP NOTICE: EOF caught while checking if connected', self::DEBUG_CLIENT @@ -653,7 +667,7 @@ class SMTP return false; } - return true; // everything looks good + return true; //everything looks good } return false; @@ -671,7 +685,7 @@ class SMTP $this->server_caps = null; $this->helo_rply = null; if (is_resource($this->smtp_conn)) { - // close the connection and cleanup + //Close the connection and cleanup fclose($this->smtp_conn); $this->smtp_conn = null; //Makes for cleaner serialization $this->edebug('Connection: closed', self::DEBUG_CONNECTION); @@ -706,7 +720,7 @@ class SMTP * NOTE: this does not count towards line-length limit. */ - // Normalize line breaks before exploding + //Normalize line breaks before exploding $lines = explode("\n", str_replace(["\r\n", "\r"], "\n", $msg_data)); /* To distinguish between a complete RFC822 message and a plain message body, we check if the first field @@ -752,7 +766,8 @@ class SMTP //Send the lines to the server foreach ($lines_out as $line_out) { - //RFC2821 section 4.5.2 + //Dot-stuffing as per RFC5321 section 4.5.2 + //https://tools.ietf.org/html/rfc5321#section-4.5.2 if (!empty($line_out) && $line_out[0] === '.') { $line_out = '.' . $line_out; } @@ -786,7 +801,16 @@ class SMTP public function hello($host = '') { //Try extended hello first (RFC 2821) - return $this->sendHello('EHLO', $host) or $this->sendHello('HELO', $host); + if ($this->sendHello('EHLO', $host)) { + return true; + } + + //Some servers shut down the SMTP service here (RFC 5321) + if (substr($this->helo_rply, 0, 3) == '421') { + return false; + } + + return $this->sendHello('HELO', $host); } /** @@ -976,12 +1000,12 @@ class SMTP $this->client_send($commandstring . static::LE, $command); $this->last_reply = $this->get_lines(); - // Fetch SMTP code and possible error code explanation + //Fetch SMTP code and possible error code explanation $matches = []; if (preg_match('/^([\d]{3})[ -](?:([\d]\\.[\d]\\.[\d]{1,2}) )?/', $this->last_reply, $matches)) { $code = (int) $matches[1]; $code_ex = (count($matches) > 2 ? $matches[2] : null); - // Cut off error code from each response line + //Cut off error code from each response line $detail = preg_replace( "/{$code}[ -]" . ($code_ex ? str_replace('.', '\\.', $code_ex) . ' ' : '') . '/m', @@ -989,7 +1013,7 @@ class SMTP $this->last_reply ); } else { - // Fall back to simple parsing if regex fails + //Fall back to simple parsing if regex fails $code = (int) substr($this->last_reply, 0, 3); $code_ex = null; $detail = substr($this->last_reply, 4); @@ -1184,7 +1208,7 @@ class SMTP */ protected function get_lines() { - // If the connection is bad, give up straight away + //If the connection is bad, give up straight away if (!is_resource($this->smtp_conn)) { return ''; } @@ -1237,13 +1261,13 @@ class SMTP $str = @fgets($this->smtp_conn, self::MAX_REPLY_LENGTH); $this->edebug('SMTP INBOUND: "' . trim($str) . '"', self::DEBUG_LOWLEVEL); $data .= $str; - // If response is only 3 chars (not valid, but RFC5321 S4.2 says it must be handled), - // or 4th character is a space or a line break char, we are done reading, break the loop. - // String array access is a significant micro-optimisation over strlen + //If response is only 3 chars (not valid, but RFC5321 S4.2 says it must be handled), + //or 4th character is a space or a line break char, we are done reading, break the loop. + //String array access is a significant micro-optimisation over strlen if (!isset($str[3]) || $str[3] === ' ' || $str[3] === "\r" || $str[3] === "\n") { break; } - // Timed-out? Log and break + //Timed-out? Log and break $info = stream_get_meta_data($this->smtp_conn); if ($info['timed_out']) { $this->edebug( @@ -1252,7 +1276,7 @@ class SMTP ); break; } - // Now check if reads took too long + //Now check if reads took too long if ($endtime && time() > $endtime) { $this->edebug( 'SMTP -> get_lines(): timelimit reached (' . diff --git a/kirby/vendor/psr/log/Psr/Log/AbstractLogger.php b/kirby/vendor/psr/log/Psr/Log/AbstractLogger.php index 90e721a..e02f9da 100755 --- a/kirby/vendor/psr/log/Psr/Log/AbstractLogger.php +++ b/kirby/vendor/psr/log/Psr/Log/AbstractLogger.php @@ -14,8 +14,8 @@ abstract class AbstractLogger implements LoggerInterface /** * System is unusable. * - * @param string $message - * @param array $context + * @param string $message + * @param mixed[] $context * * @return void */ @@ -30,8 +30,8 @@ abstract class AbstractLogger implements LoggerInterface * Example: Entire website down, database unavailable, etc. This should * trigger the SMS alerts and wake you up. * - * @param string $message - * @param array $context + * @param string $message + * @param mixed[] $context * * @return void */ @@ -45,8 +45,8 @@ abstract class AbstractLogger implements LoggerInterface * * Example: Application component unavailable, unexpected exception. * - * @param string $message - * @param array $context + * @param string $message + * @param mixed[] $context * * @return void */ @@ -59,8 +59,8 @@ abstract class AbstractLogger implements LoggerInterface * Runtime errors that do not require immediate action but should typically * be logged and monitored. * - * @param string $message - * @param array $context + * @param string $message + * @param mixed[] $context * * @return void */ @@ -75,8 +75,8 @@ abstract class AbstractLogger implements LoggerInterface * Example: Use of deprecated APIs, poor use of an API, undesirable things * that are not necessarily wrong. * - * @param string $message - * @param array $context + * @param string $message + * @param mixed[] $context * * @return void */ @@ -88,8 +88,8 @@ abstract class AbstractLogger implements LoggerInterface /** * Normal but significant events. * - * @param string $message - * @param array $context + * @param string $message + * @param mixed[] $context * * @return void */ @@ -103,8 +103,8 @@ abstract class AbstractLogger implements LoggerInterface * * Example: User logs in, SQL logs. * - * @param string $message - * @param array $context + * @param string $message + * @param mixed[] $context * * @return void */ @@ -116,8 +116,8 @@ abstract class AbstractLogger implements LoggerInterface /** * Detailed debug information. * - * @param string $message - * @param array $context + * @param string $message + * @param mixed[] $context * * @return void */ diff --git a/kirby/vendor/psr/log/Psr/Log/LoggerAwareTrait.php b/kirby/vendor/psr/log/Psr/Log/LoggerAwareTrait.php index 639f79b..82bf45c 100755 --- a/kirby/vendor/psr/log/Psr/Log/LoggerAwareTrait.php +++ b/kirby/vendor/psr/log/Psr/Log/LoggerAwareTrait.php @@ -10,7 +10,7 @@ trait LoggerAwareTrait /** * The logger instance. * - * @var LoggerInterface + * @var LoggerInterface|null */ protected $logger; diff --git a/kirby/vendor/psr/log/composer.json b/kirby/vendor/psr/log/composer.json index 3f6d4ee..ca05695 100755 --- a/kirby/vendor/psr/log/composer.json +++ b/kirby/vendor/psr/log/composer.json @@ -7,7 +7,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "require": {